textFieldShouldReturn未在iOS中调用

时间:2011-01-07 14:15:11

标签: ios iphone uitextfield

我们正试图弄清楚如何隐藏键盘,但是我们遇到了textFieldShouldReturn触发的问题。为什么?

这就是做了什么:

*的.h

@interface MultiSalesViewController : UIViewController <UITextFieldDelegate>

*。ç

txtCardNumber.delegate = self;

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    [textField setUserInteractionEnabled:YES];
    [textField resignFirstResponder];
    return YES;
}

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

如何隐藏键盘?

10 个答案:

答案 0 :(得分:79)

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

答案 1 :(得分:28)

我遇到了同样的问题,正如Warren Crowther建议的那样,我设法通过按住CTRL并从TextBox拖动到“文件所有者”标签来解决它。

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

enter image description here

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

答案 2 :(得分:11)

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

也许这会帮助某些人试图解释为什么不会触发委托方法。

答案 3 :(得分:8)

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

  

yourTextField.delegate = self;

答案 4 :(得分:6)

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

答案 5 :(得分:3)

以下是来自Mike Gledhill和Warren Crowther的回答,更新了xcode 5截图。

(要设置UITextField委托,按住ctrl +从UITextField拖动到“文件所有者”黄色按钮,如下图所示。如果未设置UITextField委托,则永远不会调用textFieldShouldReturn方法)。

enter image description here

答案 6 :(得分:2)

我把所有东西都连接得恰到好处,- (BOOL)textFieldShouldReturn:(UITextField *)textField仍未被召唤!

作为解决方法,我配置了一个方法来启动&#39; EditingDidEnd&#39;:

enter image description here

答案 7 :(得分:1)

确保您的MultiSalesViewController实施UITextFieldDelegate协议:

@interface MultiSalesViewController : UIViewController <UITextFieldDelegate>

尝试在[self becomeFirstResponder];

之后添加[textField resignFirstResponder];

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

txtCardNumber.returnKeyType = UIReturnKeyDone;

我不确定是否必须为功能设置

答案 8 :(得分:1)

转到Connection Inspector并将委​​托连接到视图控制器.thats it。

答案 9 :(得分:0)

检查清单以使其发挥作用:

  
      
  • 您是否将控制器设置为委托到UITextField实例?

  •   
  • 确保通过分配属性(自动释放)或明确保留控制器来取消分配控制器。

  •