textFieldShouldReturn未在iOS中调用

问题描述 投票:33回答:10

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

这就是做了什么:

*。H

@interface MultiSalesViewController : UIViewController <UITextFieldDelegate>

*。C

txtCardNumber.delegate = self;

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

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

如何隐藏键盘工作?

ios iphone uitextfield
10个回答
79
投票

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


0
投票

检查表让它工作:

  • 您是否将控制器设置为UITextField实例的委托?
  • 确保通过分配属性(自动释放)或显式保留控制器来取消分配控制器。

28
投票

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

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

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


11
投票

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

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


8
投票

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

yourTextField.delegate = self;


6
投票

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


3
投票

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

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


2
投票

我把所有东西都连接起来,- (BOOL)textFieldShouldReturn:(UITextField *)textField仍然没有被召唤!

作为解决方法,我配置了一个触发'EditingDidEnd'的方法:

enter image description here


1
投票

确保你的MultiSalesViewController实现了UITextFieldDelegate协议:

@interface MultiSalesViewController : UIViewController <UITextFieldDelegate>

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


编辑:只是另一个想法..你的UITextFieldreturnKeyType的值设置?

txtCardNumber.returnKeyType = UIReturnKeyDone;

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


1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.