【发布时间】:2020-12-29 16:28:28
【问题描述】:
我只是在键盘上为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()
}
BetViewController 由 StoryBoardID 添加。
我错过了什么?
错误信息:
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
【问题讨论】:
-
这段代码在
BetViewController里面吗?如果是这样,请尝试将您的操作更改为#selector(self.doneAction) -
是的。与 self 相同的错误。
-
完整的错误信息?它将提供更多信息。
-
"
BetViewController是由 StoryBoardID 添加的" --- 怎么添加的?你把它记在心里了吗? -
简单地从主视图控制器添加“self.present(betViewController, animated: true, completion: nil)”
标签: ios swift uitextfield toolbar