0

我有一个DetailViewController,它的实现文件包含以下代码:

#import <UIKit/UIKit.h>

@interface DetailViewController : UIViewController <UITextFieldDelegate>

{
    __weak IBOutlet UITextField *nameField;
    __weak IBOutlet UITextField *numberField;
}

@end

在我的故事板中,我将ViewController's 设置为DetailViewController并将我的两个 s 的代表连接UITextField到我的DetailViewController. my 的实现文件DetailViewController包含此方法,可在点击文本字段以外的其他位置时关闭键盘:

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

虽然没有调用此方法,但我已经使用断点对其进行了测试。可能出了什么问题?

4

3 回答 3

1

rdelmar 是正确的,只有当用户点击键盘上的“返回”键时才会触发您的代码,而不是当他们在键盘外单击时触发。

为了获得您正在寻找的行为,我会在您的文本字段后面的视图中添加一个 Tap Gesture Recognizer,然后将[nameField resignFirstResponder];and[numberField resignFirstResponder];放入点击手势识别器的代码中。

于 2012-10-05T16:01:58.507 回答
0

你为什么用_weak?去掉它。

在你的.m文件中做(在viewDidLoad):

[nameField setDelegate:self];

其他文本字段相同。

于 2012-10-05T15:56:43.983 回答
0
  • 我创建了一个示例项目
  • 添加到视图控制器
  • 添加了一个文本字段并连接了它的委托
  • 在视图控制器中编写代码

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

它工作得很好。试过弱它也可以作为实例变量和属性

所以检查你是否在任何地方重新分配它,并使用断点检查它的内存是否相同

于 2012-10-05T15:57:25.793 回答