Iphone 如何更改键盘“完成”按钮的行为?

Iphone 如何更改键盘“完成”按钮的行为?,iphone,objective-c,ios,uitextfield,Iphone,Objective C,Ios,Uitextfield,好的,我的目标是,当在UITextField中引入某个内容后点击键盘完成按钮时,它应该触发我的一个操作,但不会关闭键盘 现在,我已经通过Did End on Exit事件将UITextField与我的操作连接起来,每次我在完成键入时点击Done按钮,键盘就会消失 如果需要进一步说明,请告诉我。尝试在代码中设置textField.delegate=self,并遵守UITextFieldDelegate协议。然后执行此方法: - (BOOL)textFieldShouldReturn:(UIText

好的,我的目标是,当在
UITextField
中引入某个内容后点击键盘完成按钮时,它应该触发我的一个操作,但不会关闭键盘

现在,我已经通过Did End on Exit事件将
UITextField
与我的操作连接起来,每次我在完成键入时点击Done按钮,键盘就会消失


如果需要进一步说明,请告诉我。

尝试在代码中设置
textField.delegate=self
,并遵守
UITextFieldDelegate
协议。然后执行此方法:

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    // Do something
}

您必须使用
UITextField
的委托方法。(在Interface Builder或source中将TextField的委托设置为正确的viewController)

然后,转到textField的viewcontroller的.h文件:

@interface correctViewController(type yours) :UIViewController <UITextFieldDelegate>
//now correctViewController "understands" our textfield.

看起来像这样。

看一下
UITextFieldDelegate
协议参考:

您可以使用此方法控制键盘的行为:

- (BOOL)textFieldShouldReturn:(UITextField *)theTextField {
    return NO;
}

在Swift中,它将是:

//MARK: UITextFieldDelegate

func textFieldShouldReturn(textField: UITextField) -> Bool
{
    textField.resignFirstResponder()

    return true
}

谢谢,这很有帮助。但现在我有一个稍微不同的问题。我不确定是否应该为它创建一个单独的主题。因此,我将我的控制器作为委托方法放置,并重写了textFieldShouldReturn:方法,同时我还放置了一个在按下“完成”按钮时触发的操作。然而,当我在iPad上测试它时,应用程序崩溃了。。。在这些改变之前,一切都是完美的。有什么想法吗?试着像我的回答那样添加到控制器中。还有,日志中有什么?我实际上使用的是一个黑客版本的Xcode,它在日志中没有显示任何内容。但是,我可以描述我在textFieldShouldReturn:方法中所做的操作。我已经放置了这行代码[self-performSelector:@selector(addButton:)];//addButton是我自己的方法之一。返回否;就这样。当我把它评论出来时,这个应用程序运行得很好。我的错误。我没有正确调用该方法。我只需要做[自我添加按钮];就这样:)谢谢anyway@ElgsQianChen上述委托方法为您提供了一个参数
textField
。尝试将所有文本字段存储为实例变量或分配其
标记
属性,然后在方法的实现中使用
开关
if
,以确定返回的是哪一个。这不是最优雅的解决方案,但它应该可以工作。谢谢你的回复,但我并没有隐藏键盘。这就是我需要重写此方法的原因。顺便说一句,不是我把你弄糊涂了,我没能正确理解你的键盘。你能解决你的问题吗?
//MARK: UITextFieldDelegate

func textFieldShouldReturn(textField: UITextField) -> Bool
{
    textField.resignFirstResponder()

    return true
}