iOS 使用touchBegan隐藏键盘后,UIButton和UITableView上的点击事件不响应

隐藏键盘操作,是开发中常见操作。一般,我们可以通过下面的方式,来隐藏键盘。

隐藏键盘的处理逻辑如下:

- (void)viewDidLoad {-(void)touchesBegan{

    [super viewDidLoad];

   。。。。。。。。。。

    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(touchesBegan)];

    [self.view addGestureRecognizer:tap];

    tap.delegate=self;

}

-(void)touchesBegan{

    [self.view endEditing:YES];

}

通过该方法,隐藏键盘比较好用,但是发现界面上的UITableView和UIButton的点击事件不响应,原因是它们的点击事件全都被拦截了。

因此,我们可以通过设置手势识别与否,来处理上面的问题。由于手势识别gesture recognizer默认为yes,我们只需要根据具体情况,进行设置,就能避免拦截事件。如下:

- (BOOL)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizer shouldReceiveTouch:(UITouch*)touch{

    if ([touch.view.superview isKindOfClass:[UITableViewCell class]]) {

        returnNO;

    }else if([touch.view.superview isKindOfClass:[UIButton class]]) {

        returnNO;

    }

    return YES;

}

通过上面的设置,UITableView等控件,就能正常接收点击事件。

详情可以参考:https://www.jianshu.com/p/d77164f8cac5

你可能感兴趣的:(iOS 使用touchBegan隐藏键盘后,UIButton和UITableView上的点击事件不响应)