如何更改键盘完成按钮的行为?
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 上测试它时,应用程序崩溃了……在这些改变之前,一切都完美无缺。有什么想法吗? 尝试像我的回答一样将textField
。尝试将所有文本字段存储为实例变量或分配它们的tag
属性,然后在方法的实现中使用switch
或if
来确定返回了哪个。不是最优雅的解决方案,但它应该可以工作。【参考方案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 的文本?