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

Posted

技术标签:

【中文标题】如何更改键盘完成按钮的行为?【英文标题】:How to change the keyboard Done button behavior? 【发布时间】:2012-01-27 18:52:50 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

尝试在代码中设置textField.delegate = self,同时符合UITextFieldDelegate协议。然后实现这个方法:

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

【讨论】:

感谢帮助。但现在我有一个稍微不同的问题。我不确定是否应该为它创建一个单独的主题。因此,我将我的控制器作为委托方法并覆盖了 textFieldShouldReturn: 方法,我还放置了一个在点击完成按钮时触发的操作。然而,当我在我的 iPad 上测试它时,应用程序崩溃了……在这些改变之前,一切都完美无缺。有什么想法吗? 尝试像我的回答一样将 添加到您的控制器中。另外,日志中有什么内容? 我实际上使用的是 Xcode 的破解版本,它在日志中没有显示任何内容。但是我可以描述我在 textFieldShouldReturn: 方法中所做的事情。我已经放置了这行代码 [self performSelector:@selector(addButton:)]; // addButton 是我自己的方法之一。返回否;就是这样。当我将其注释掉时,该应用程序运行良好 没关系。我的错。我没有正确调用该方法。我只需要做 [self addButton];就是这样 :) 不过还是谢谢 @ElgsQianChen 上面描述的委托方法给你一个参数textField。尝试将所有文​​本字段存储为实例变量或分配它们的tag 属性,然后在方法的实现中使用switchif 来确定返回了哪个。不是最优雅的解决方案,但它应该可以工作。【参考方案2】:

看看UITextFieldDelegate协议参考: http://developer.apple.com/library/ios/#documentation/uikit/reference/UITextFieldDelegate_Protocol/UITextFieldDelegate/UITextFieldDelegate.html

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

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

【讨论】:

【参考方案3】:

你必须使用UITextField的委托方法。 (在 Interface Builder 或源代码中将 TextField 的委托设置为更正 viewController)

然后,进入textField的viewcontroller的.h文件:

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

转到正确的ViewController.m 文件:

//Create delegate method of textField
-(BOOL)textFieldShouldReturn:(UITextField *)textField
    [textField resignFirstResponder]; //to hide keyboard
    return NO;

看起来像这样。

【讨论】:

感谢您的回复,但我不想隐藏键盘。这就是我需要重写此方法的原因。附言不是我辜负了你 我没有正确理解你的键盘。你的问题解决了吗?【参考方案4】:

在 Swift 中应该是:

//MARK: UITextFieldDelegate

func textFieldShouldReturn(textField: UITextField) -> Bool

    textField.resignFirstResponder()

    return true

【讨论】:

以上是关于如何更改键盘完成按钮的行为?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 中更改键盘完成按钮上 Textfield 的文本?

更改 iOS 虚拟键盘“上一个”、“下一个”、“完成”按钮的语言

更改“返回”键盘按钮的文本

如何在自定义键盘中快速制作返回按钮

更改 UITextView 的键盘返回按钮的正确方法是啥

如何在IOS键盘顶部的键盘上添加完成按钮?