当用户点击 textField 外部时关闭键盘
Dismiss keyboard when user taps outside the textField
我试图在用户选择 textFiled
以外的内容时关闭键盘。我尝试了以下方法:
- (void)viewDidLoad {
mytextField1.delegate = self;
mytextFiled2.delegate = self;
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[self.view endEditing:YES];
}
这没有用。然后我在 touchesBagan
中尝试了 [... resignFirstResponder]
,但也没有用。难道我做错了什么?为什么这不起作用?
您是否尝试过在关闭键盘的文本字段的超级视图上添加 UITapGestureRecognizer?
向视图(而不是文本字段)添加点击手势,以便您知道何时有人点击视图。
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(viewTapped)];
[self.view addGestureRecognizer:tap];
然后当该方法被调用时,退出第一响应者以关闭键盘。
- (void)viewTapped
{
if (self.textField.isFirstResponder) {
[self.textField resignFirstResponder];
}
}
您可以使用 UITapGestureRecognizer。并将当前聚焦的 TextField 保存在 activeTF。您需要将当前视图控制器设置为 UITextField(s) 的委托。
UITextField *activeTF;
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
.......
UITapGestureRecognizer *dismissTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissKeyboard)];
[self.view addGestureRecognizer:dismissTap];
}
- (void)dismissKeyboard {
if (activeTF) {
[activeTF resignFirstResponder];
}
}
#pragma mark - TextField Delegate
-(void)textFieldDidBeginEditing:(UITextField *)sender
{
activeTF = sender;
}
- (void)textFieldDidEndEditing:(UITextField *)sender
{
activeTF = nil;
}
我试图在用户选择 textFiled
以外的内容时关闭键盘。我尝试了以下方法:
- (void)viewDidLoad {
mytextField1.delegate = self;
mytextFiled2.delegate = self;
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[self.view endEditing:YES];
}
这没有用。然后我在 touchesBagan
中尝试了 [... resignFirstResponder]
,但也没有用。难道我做错了什么?为什么这不起作用?
您是否尝试过在关闭键盘的文本字段的超级视图上添加 UITapGestureRecognizer?
向视图(而不是文本字段)添加点击手势,以便您知道何时有人点击视图。
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(viewTapped)];
[self.view addGestureRecognizer:tap];
然后当该方法被调用时,退出第一响应者以关闭键盘。
- (void)viewTapped
{
if (self.textField.isFirstResponder) {
[self.textField resignFirstResponder];
}
}
您可以使用 UITapGestureRecognizer。并将当前聚焦的 TextField 保存在 activeTF。您需要将当前视图控制器设置为 UITextField(s) 的委托。
UITextField *activeTF;
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
.......
UITapGestureRecognizer *dismissTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissKeyboard)];
[self.view addGestureRecognizer:dismissTap];
}
- (void)dismissKeyboard {
if (activeTF) {
[activeTF resignFirstResponder];
}
}
#pragma mark - TextField Delegate
-(void)textFieldDidBeginEditing:(UITextField *)sender
{
activeTF = sender;
}
- (void)textFieldDidEndEditing:(UITextField *)sender
{
activeTF = nil;
}