首页 > 解决方案 > donePicker 无法识别的选择器发送到实例 UiTextField

问题描述

我只是在键盘上添加一个完成的工具栏UiTextField

点击完成后,我面临 unrecognized selector sent to instance错误:

override func viewDidLoad() {
        super.viewDidLoad()
        NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name: UIResponder.keyboardWillShowNotification, object: nil)
        NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide), name: UIResponder.keyboardWillHideNotification, object: nil)

        self.addDoneButtonOnKeyboard()
    }
   
    @IBOutlet weak var betTextField: UITextField!

func addDoneButtonOnKeyboard(){
        let doneToolbar: UIToolbar = UIToolbar(frame: CGRect.init(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 50))
        doneToolbar.barStyle = .default

        let flexSpace = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
        let done: UIBarButtonItem = UIBarButtonItem(title: "Done", style: .done, target: self, action: #selector(BetViewController.doneAction))

        let items = [flexSpace, done]
        doneToolbar.items = items
        doneToolbar.sizeToFit()
        
        betTextField.inputAccessoryView = doneToolbar
    }

    @objc func doneAction() {
        betTextField.resignFirstResponder()
    }

BetViewControllerStoryBoardID 添加。

我错过了什么?

错误信息 :

 Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[Bet.BetViewController betTexField:]: unrecognized selector sent to instance 0x7ffa0c860e00'
terminating with uncaught exception of type NSException
CoreSimulator 732.18.6 - Device: iPhone 12 Pro Max (4549AD60-8D64-44E7-B2D6-C347655A1DA6) - Runtime: iOS 14.3 (18C61) - DeviceType: iPhone 12 Pro Max

标签: iosswiftuitextfieldtoolbar

解决方案


在 StoryBoard 中,我刚刚删除了一个未使用的已发送事件“Editing Did End”。

不再与 Done ToolBar 发生冲突。


推荐阅读