應(yīng)用場(chǎng)景:登錄界面或者填寫信息的時(shí)候點(diǎn)擊空白退出鍵盤
- 一般解決方案:
1.監(jiān)聽scrollView實(shí)時(shí)滾動(dòng)代理方法調(diào)用[self.view endEditing:YES]
或者[self.textField resignFirstResponse];
2.touchBegin
方法里,調(diào)用[self.view endEditing:YES]
或者[self.textField resignFirstResponse];
這里介紹另外一種解決方案
- 1.給viewController寫一個(gè)分類
- 2.利用鍵盤彈出和退出發(fā)出通知調(diào)用相應(yīng)的方法
- 3.給當(dāng)前控制器添加點(diǎn)擊手勢(shì)
@interface UIViewController (DismissKeyboard)
-(void)setupForDismissKeyboard;
@end
@implementation UIViewController (DismissKeyboard)
- (void)setupForDismissKeyboard {
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
UITapGestureRecognizer *singleTapGR =
[[UITapGestureRecognizer alloc] initWithTarget:self
action:@selector(tapAnywhereToDismissKeyboard:)];
__weak UIViewController *weakSelf = self;
NSOperationQueue *mainQuene =[NSOperationQueue mainQueue];
[nc addObserverForName:UIKeyboardWillShowNotification
object:nil
queue:mainQuene
usingBlock:^(NSNotification *note){
[weakSelf.view addGestureRecognizer:singleTapGR];
}];
[nc addObserverForName:UIKeyboardWillHideNotification
object:nil
queue:mainQuene
usingBlock:^(NSNotification *note){
[weakSelf.view removeGestureRecognizer:singleTapGR];
}];
}
- (void)tapAnywhereToDismissKeyboard:(UIGestureRecognizer *)gestureRecognizer {
//此method會(huì)將self.view里所有的subview的first responder都resign掉
[self.view endEditing:YES];
}
用法
#import "UIViewController+DismissKeyboard.h"
- 2.在viewDidLoad方法中主動(dòng)調(diào)用
- (void)viewDidLoad {
[super viewDidLoad];
[self setupForDismissKeyboard];
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者