【发布时间】:2017-04-10 07:12:00
【问题描述】:
我有四个 UITextField,每个都与 .h 文件中的一个出口相关联。我还为每个文本字段定义了 4 个关闭函数,如下所示:
- (IBAction)dismiss1:(id)sender;
- (IBAction)dismiss2:(id)sender;
- (IBAction)dismiss3:(id)sender;
- (IBAction)dismiss4:(id)sender;
@property (strong, nonatomic) IBOutlet UITextField *name;
@property (strong, nonatomic) IBOutlet UITextField *email;
@property (strong, nonatomic) IBOutlet UITextField *weight;
@property (strong, nonatomic) IBOutlet UITextField *age;
.m文件中dismiss函数的实现:
- (IBAction)dismiss1:(id)sender {
[sender resignFirstResponder];
}
- (IBAction)dismiss2:(id)sender {
[sender resignFirstResponder];
}
...
我非常确定插座已正确连接到每个 UITextFiled。每个dismiss函数的IBAction也对应着'Editing did end'事件。但是,当我使用模拟器运行应用程序时,当我单击“Enter/Done”时键盘不会关闭。也很奇怪,当我将断点放在关闭函数中时,在输入相应的 UITextField 时单击“Enter”并不会调出调试器。
非常感谢您的帮助!
更新:我使用断点检查了发送者 (dismiss1) 的对象类型,它是 UITextFiled。但是,当我在第一个 TextField 中单击“Enter”时,我没有进入调试模式,而是在单击第二个 TextField 时(在键入之前)进入了调试模式。
【问题讨论】:
-
将您的发件人对象转换为 UITextField 对象,然后重试。
-
您是否在 Storyboard 中设置了 UITextfields 委派您的控制器? “编辑结束”不需要IBAction方法,你可以只声明方法并在情节提要中连接“编辑结束”并在执行中编写resignFirstResponder
-
尝试在您的解除方法中使用断点并检查发件人的类型。也使用 [self.view endEditing:YES];在您的解雇方法中。
标签: ios objective-c uitextfield