在 iOS 中未调用 textFieldShouldReturn
Posted
技术标签:
【中文标题】在 iOS 中未调用 textFieldShouldReturn【英文标题】:textFieldShouldReturn not being called in iOS 【发布时间】:2011-01-07 14:15:11 【问题描述】:我们正试图弄清楚如何让键盘隐藏,但我们在让textFieldShouldReturn
触发时遇到了问题。为什么?
这就是我们所做的:
*.h
@interface MultiSalesViewController : UIViewController <UITextFieldDelegate>
*.c
txtCardNumber.delegate = self;
- (BOOL)textFieldShouldReturn:(UITextField *)textField
[textField setUserInteractionEnabled:YES];
[textField resignFirstResponder];
return YES;
此外,textField
在 Interface Builder 中将其委托设置为 Files Owner。一件奇怪的事情是 viewController 的 - (void)textFieldDidEndEditing:(UITextField *)textField
正在工作。
如何让键盘的隐藏起作用?
【问题讨论】:
我不知道您可以将 Objective-c 代码放在 *.c 文件中并让它工作! 哈哈,是的,肯定是 .m? 【参考方案1】:我遇到了完全相同的问题,这是因为我忘记将界面生成器中文本字段的委托设置为“文件所有者”。
【讨论】:
【参考方案2】:我遇到了同样的问题,正如 Warren Crowther 建议的那样,我设法通过按住 CTRL 键并从 TextBox 拖动到“文件所有者”标签来解决它。
(天哪,我有时会想念 Visual Studio……!!)
(抱歉重复已经说过的话,但我认为截图可能有用!)
【讨论】:
【参考方案3】:我有委托设置和一切。但我使用的是 UITextView 而不是 UITextfield...
也许这会帮助那些试图弄清楚为什么没有触发委托方法的人。
【讨论】:
+1 寻求可以帮助处于极端情况下的人的建议。 非常感谢,因为这正是发生在我身上的事情。呃 它是否仍然可以与 UITextView 一起使用? UITextView: ***.com/questions/703754/…【参考方案4】:我看到您已将其放入您的代码中,但对于未来的访问者,请将其添加到您的代码中:
yourTextField.delegate = self;
【讨论】:
【参考方案5】:我认为您正在使用 xib。如果是这样,您还需要在那里设置委托。在xib中右键单击您的UITextfiled,您将拥有委托选项将其拖到您的文件所有者。
【讨论】:
【参考方案6】:确保您的 MultiSalesViewController
实现了 UITextFieldDelegate
协议:
@interface MultiSalesViewController : UIViewController <UITextFieldDelegate>
尝试在[textField resignFirstResponder];
之后添加[self becomeFirstResponder];
编辑:
只是另一个想法..您的UITextField
是否为returnKeyType
设置了值?
txtCardNumber.returnKeyType = UIReturnKeyDone;
我不确定是否必须设置此功能才能正常工作
【讨论】:
尽管视图控制器实现了 UITextFieldDelegate,但现在 textFieldShouldReturn 回调根本没有触发。这很奇怪,因为 textFieldDidEndEditing 回调是。这看起来很奇怪,因为两者都被定义为 UITextFieldDelegate 的一部分。所以,我的问题是为什么一个被解雇而不是另一个?【参考方案7】:以下是 Mike Gledhill 和 Warren Crowther 的回答,更新了 xcode 5 屏幕截图。
(要设置 UITextField 委托,按住 ctrl + 从 UITextField 拖动到“文件所有者”黄色按钮,如下图所示。如果未设置 UITextField 委托,则永远不会调用 textFieldShouldReturn 方法。
【讨论】:
【参考方案8】:我把所有东西都连接好了,- (BOOL)textFieldShouldReturn:(UITextField *)textField
仍然没有被调用!
作为一种变通方法,我配置了一个在“EditingDidEnd”上触发的方法:
【讨论】:
【参考方案9】:转到连接检查器并将委托连接到视图控制器。就是这样。
【讨论】:
【参考方案10】:让它工作的清单:
您是否将控制器设置为 委托 到 UITextField 实例?
通过分配给属性(自动释放)或显式保留它,确保控制器没有被释放。
【讨论】:
以上是关于在 iOS 中未调用 textFieldShouldReturn的主要内容,如果未能解决你的问题,请参考以下文章
在 iOS 13 设备中未调用 viewForSupplementaryElementOfKind
在 iOS 9 中未调用 updateSearchResultsForSearchController
在 iOS8 中未调用 UIViewController 设备旋转委托方法