textFieldShouldReturn未在iOS中调用

iPh*_*per 33 iphone uitextfield ios

我们试图弄清楚如何让键盘隐藏起来,但是我们遇到了问题textFieldShouldReturn.为什么?

这就是做了什么:

*.H

@interface MultiSalesViewController : UIViewController <UITextFieldDelegate>
Run Code Online (Sandbox Code Playgroud)

*.C

txtCardNumber.delegate = self;

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    [textField setUserInteractionEnabled:YES];
    [textField resignFirstResponder];
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

此外,textField它的委托在Interface Builder中设置为文件所有者.奇怪的是,viewController - (void)textFieldDidEndEditing:(UITextField *)textField正在运行.

如何隐藏键盘工作?

小智 79

我有完全相同的问题,因为我忘了将界面构建器中的文本字段的委托设置为"文件所有者".

  • 这么简单但我经常忘记所需的IB设置,谢谢. (2认同)

Mik*_*ill 28

我遇到了同样的问题,正如Warren Crowther建议的那样,我设法通过按住CTRL并从TextBox拖动到"File's Owner"标签来解决它.

(天哪,我有时想念Visual Studio ...... !!)

在此输入图像描述

(抱歉重复已经说过的话,但我认为截图可能有用!)


mom*_*omo 11

我有代表集和一切.但我使用的是UITextView而不是UITextfield ...

也许这将有助于某人试图找出为什么没有触发委托方法.


sri*_*jay 8

我看到你把它放在你的代码中,但对于将来的访问者,将其添加到你的代码中:

yourTextField.delegate = self;


小智 6

我认为你正在使用xib.如果是这样你还需要在那里设置委托.右键单击xib中的UITextfiled,您将有委托选项将其拖动到文件所有者.


jam*_*mes 3

确保您MultiSalesViewController实现了UITextFieldDelegate协议:

@interface MultiSalesViewController : UIViewController <UITextFieldDelegate>

尝试[self becomeFirstResponder];在之后添加[textField resignFirstResponder];


编辑:只是另一个想法..您是否UITextField设置了值returnKeyType

txtCardNumber.returnKeyType = UIReturnKeyDone;

我不确定是否必须设置此功能才能正常工作

  • 现在,尽管视图控制器实现了 UITextFieldDelegate,但 textFieldShouldReturn 回调根本没有触发。这很奇怪,因为 textFieldDidEndEditing 回调是。这看起来很奇怪,因为两者都被定义为 UITextFieldDelegate 的一部分。所以,我的问题是为什么一个在射击而不是另一个? (2认同)