ios - 出现键盘时如何使键盘以外的其他界面不可用?

标签 ios objective-c

我学会了如何在单击返回键或用户触摸文本字段之外时关闭键盘。

一种方法是委托(delegate)一个类来管理文本字段并编写代码:

- (BOOL) textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    return YES; //I'm not sure whether I choose YES or NO
}

另一种方式如下:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [touches anyObject];
    if (touchToDismissKeyboard.phase == UITouchPhaseBegan) {
    [self.firstTextField resignFirstResponder];
    }
}

但是,通过上述任何一种方法,我发现其他接口(interface)已“启用”,例如与文本字段在同一 View 上的分段控件或开关。此外,当这些启用的界面被点击时,键盘仍然在屏幕上。

然后,我的问题是如何在键盘出现时使其他界面不可用(“启用 = NO”),以及如何在不更改其他界面的值的情况下通过触摸键盘或文本字段之外的任何位置来关闭键盘。

最佳答案

使用 Tap 手势识别器

UITapGestureRecognizer *tapRecognize = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dissmissKeyBoard)];
tapRecognize.delegate = self;
tapRecognize.numberOfTapsRequired = 1;
[self.viewB addGestureRecognizer:tapRecognize];

然后dissmissKeyBoard方法实现。
- (void)dissmissKeyBoard
{
    [yourTextField resignFirstResponder];
}

希望这会帮助你。

关于ios - 出现键盘时如何使键盘以外的其他界面不可用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24532544/

相关文章:

IOS异步下载

ios - 未捕获的异常 'NSInternalInconsistencyException',原因 : '-[__NSCFDictionary setObject:forKey:]: mutating method sent to immutable object'

ios - iOS Clips AI集成

ios - UITextview 一直显示垂直滚动条

ios - TableviewController 委托(delegate)不返回值

ios - 如何更新ios分发证书

ios - 子类化 UITextField 并设置文本字体

iOS 即使使用调度也会出现延迟

iphone - 进行移动和服务器同步的最佳方式是什么?

iOS : How to extract value for a key in JSON object