在 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 &lt;UITextFieldDelegate&gt;

尝试在[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

iOS 9 中未调用 awakeFromNib

在 iOS8 中未调用 UIViewController 设备旋转委托方法

motionBegan:withEvent: 在 iOS 10 的 AppDelegate 中未调用

iOS 9 中未调用 UITableViewCell 中的 IBAction