错误使用swift3向条形按钮项添加动作时:#selector()

时间:2017-11-10 16:20:37

标签: swift xcode swift3 uitextfield selector

我想在键盘上创建一个与返回键相同的栏按钮项。

我有一个功能

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但是没有这样做。

1 个答案:

答案 0 :(得分:1)

您的方法的签名是submitAnswer(_:),而不是submitAnswer(textField)。但只做#selector(submitAnswer)就更简单了。如果没有歧义,则无需指定参数。

但是,UIBarButtonItem操作方法的签名必须是没有参数的签名,或者是带有表示按钮的单个参数的签名。

您不能拥有将文本字段作为参数的方法。它必须是条形按钮项。