我想在键盘上创建一个与返回键相同的栏按钮项。
我有一个功能
func submitAnswer(_ textField: UITextField)
{//somecode}
每次按下返回键时,此功能都会运行。
func textFieldShouldReturn(_ textField: UITextField) -> Bool
{
submitAnswer(textField)
//hide keyboard on return
dismissKeyboard()
return true
}
当我尝试将submitAnswer添加为条形按钮操作时,我收到错误消息。 我在下面做错了什么?
func createToolbar(textField : UITextField)
{
let toolbar = UIToolbar()
toolbar.barStyle = UIBarStyle.default
toolbar.sizeToFit()
let b = UIBarButtonItem(
title: "Submit",
style: .plain,
target: self,
action: #selector(submitAnswer(textField))
)
toolbar.items = [b]
textField.inputAccessoryView = toolbar
}
P.S我得到的错误是:' #selector'并不是指' @ objc'方法,属性或初始化程序。我尝试在submitAnswer函数前面插入@objc但是没有这样做。
答案 0 :(得分:1)
您的方法的签名是submitAnswer(_:)
,而不是submitAnswer(textField)
。但只做#selector(submitAnswer)
就更简单了。如果没有歧义,则无需指定参数。
但是,UIBarButtonItem
操作方法的签名必须是没有参数的签名,或者是带有表示按钮的单个参数的签名。
您不能拥有将文本字段作为参数的方法。它必须是条形按钮项。