我们正试图弄清楚如何隐藏键盘,但是我们遇到了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
正在运行。
如何隐藏键盘?
答案 0 :(得分:79)
我遇到了完全相同的问题,因为我忘了将界面构建器中文本字段的委托设置为“文件所有者”。
答案 1 :(得分:28)
我遇到了同样的问题,正如Warren Crowther建议的那样,我设法通过按住CTRL并从TextBox拖动到“文件所有者”标签来解决它。
(天哪,我有时想念Visual Studio ...... !!)
(抱歉重复已经说过的话,但我认为截图可能很有用!)
答案 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方法)。
答案 6 :(得分:2)
我把所有东西都连接得恰到好处,- (BOOL)textFieldShouldReturn:(UITextField *)textField
仍未被召唤!
作为解决方法,我配置了一个方法来启动&#39; EditingDidEnd&#39;:
答案 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实例?
确保通过分配属性(自动释放)或明确保留控制器来取消分配控制器。