IOS进阶很屌的项目运用iOS软件开发

iOS点击任何空白地方退出键盘

2016-03-07  本文已影响816人  船长_

应用场景:登录界面或者填写信息的时候点击空白退出键盘

这里介绍另外一种解决方案

@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会将self.view里所有的subview的first responder都resign掉
    [self.view endEditing:YES];
}

用法

#import "UIViewController+DismissKeyboard.h"
- (void)viewDidLoad {
    [super viewDidLoad];
    [self setupForDismissKeyboard];
}
上一篇下一篇

猜你喜欢

热点阅读