在调用dismissKeyboard时,我将每个UITextField添加到resignFirstResponder。
有没有办法可以获取当前所选UITextField的ID并使其成为resignFirstResponder?
#import "NewBabyViewController.h"
@interface NewBabyViewController ()
@property (weak, nonatomic) IBOutlet UITextField *BabyName;
@property (weak, nonatomic) IBOutlet UITextField *BabyNickname;
@end
@implementation NewBabyViewController
- (void)viewDidLoad
{
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]
initWithTarget:self
action:@selector(dismissKeyboard)
];
[self.view addGestureRecognizer:tap];
}
-(void)dismissKeyboard{
[self.view endEditing:YES];
//[self.BabyName resignFirstResponder];
//[self.BabyNickname resignFirstResponder];
}
-(IBAction)textFieldDone:(id)sender
{
[sender resignFirstResponder];
}
@end
答案 0 :(得分:6)
这个问题的解决方案并不是很明显,但它实际上非常容易解决。只需使用以下内容:
-(void)dismissKeyboard {
[self.view endEditing:YES];
}
答案 1 :(得分:2)
您应该自己跟踪第一个响应者。有多种方法可以做到这一点,但最简单的方法是更新textFieldDidBeginEditing:
。
如果您希望进入灰色区域,UIApplication
和UIWindow
,- (id)firstResponder
上都会有一个私有API方法,它会为您提供当前的第一响应者。我和他们有很好的记录。我更喜欢UIWindow
方法,当涉及多个窗口时更安全。
另一种方式:
[[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder) to:nil from:nil forEvent:nil];