点击空白和任意控件收键盘,第一次用.
- (void)viewDidLoad
{
[super viewDidLoad];
[self setUpForDismissKeyboard];
}
- (void)setUpForDismissKeyboard {
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
UITapGestureRecognizer *singleTapGR =
[[UITapGestureRecognizer alloc] initWithTarget:self
action:@selector(tapAnywhereToDismissKeyboard:)];
NSOperationQueue *mainQuene =[NSOperationQueue mainQueue];
__weak typeof(self) weakSelf = self;
[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会将self.view里所有的subview的first responder都resign掉
[self.view endEditing:YES];
}
//4月5日修改
-(void)viewWillDisappear:(BOOL)animated
{
//观察者回收,不然dealloc会出错
[super viewWillDisappear:animated];
[[NSNotificationCenter defaultCenter]removeObserver:self];
}
4月5日更新修改,实际使用过程中发现block里self此处需要__weak修饰.
需要回收观察者,不然dealloc会出错.
本文转帖,来源已注明.