我有一个DetailViewController
,哪个实现文件包含以下代码:
#import <UIKit/UIKit.h>
@interface DetailViewController : UIViewController <UITextFieldDelegate>
{
__weak IBOutlet UITextField *nameField;
__weak IBOutlet UITextField *numberField;
}
@end
在我的故事板中,我已将ViewController
设置为DetailViewController
,并将我UITextField
的代理人与我的DetailViewController
联系起来。我的DetailViewController
的实施文件包含此方法,以便在点击文本字段以外的其他位置时关闭键盘:
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
虽然我没有调用此方法,但我已使用断点对其进行了测试。可能出现什么问题?
答案 0 :(得分:1)
rdelmar是正确的,只有当用户点击键盘上的“返回”键时才会触发您的代码,而不是当他们点击键盘外部时。
要获得您正在寻找的行为,我会在文字字段后面的视图中添加点击手势识别器,然后将[nameField resignFirstResponder];
和[numberField resignFirstResponder];
放入点击手势识别器的代码中。
答案 1 :(得分:0)
为什么使用_weak
?删除它。
在.m
文件中(在viewDidLoad
中):
[nameField setDelegate:self];
其他文本字段相同。
答案 2 :(得分:0)
在viewcontroller中编写代码
(BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
它工作正常。脆弱它也兼具实例变量和属性
因此,请检查您是否在任何地方重新分配它,并使用断点检查其内存是否相同