的UITextField不调用委托方法
我有一个DetailViewController
,其实现文件包含以下代码:的UITextField不调用委托方法
#import <UIKit/UIKit.h>
@interface DetailViewController : UIViewController <UITextFieldDelegate>
{
__weak IBOutlet UITextField *nameField;
__weak IBOutlet UITextField *numberField;
}
@end
在我的故事板,我已经设置了ViewController
年代到DetailViewController
,并连接我的两个UITextField
S的的代表到我的DetailViewController
。我DetailViewController
的实现文件包含此方法叩击声,比文本字段之外的其他地方时,取消键盘:
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
这种方法虽然不叫,我一直在使用断点测试这一点。可能会出现什么问题?
rdelmar是正确的,你当用户点击键盘上的“返回”键只被触发的代码,而不是当他们点击键盘外部时。
要获得您要查找的行为,我会在您的文本字段后面的视图中添加一个Tap Gesture识别器,然后将[nameField resignFirstResponder];
和[numberField resignFirstResponder];
放入轻击手势识别器的代码中。
谢谢,我不知道!我已经添加了Tap Gesture Recognizer,现在它工作正常。 :) –
很高兴听到我能帮忙。 – GeneralMike
- 我创建了一个样本项目
- 添加到ViewController
- 添加一个文本框,并连接其委托
-
把代码写在视图 - 控制
(BOOL)textFieldShouldReturn:(UITextField *)textField { [textField resignFirstResponder]; return YES; }
它工作得很好。坚持弱它也作为实例变量和属性
因此,检查如果你在任何地方重新分配它,并检查它的内存是相同的还有用的断点
你有没有把日志语句放在那里看看它是否被调用?当用户点击返回按钮时调用此方法,而不是在文本字段以外的地方点击。 – rdelmar
在您的VDL中放入一个'NSLog(@“DELEGATE =>%@”,nameField.delegate);'以查看委托是否真的被设置? –