先看两个代码的不同:
for (UIView *view in [self.RowTableView subviews]) {
UITapGestureRecognizer *singleTapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTap:)];
[singleTapGestureRecognizer setNumberOfTapsRequired:1];
[view addGestureRecognizer:singleTapGestureRecognizer];
view.backgroundColor = [UIColor blackColor];
}
UITapGestureRecognizer *singleTapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTap:)];
for (UIView *view in [self.RowTableView subviews]) {
[singleTapGestureRecognizer setNumberOfTapsRequired:1];
[view addGestureRecognizer:singleTapGestureRecognizer];
view.backgroundColor = [UIColor blackColor];
}
原因:
多个UIView添加同一个手势只有最后一个有用
所以只要创建多个手势 共用一个手势方法即可
所以第一个方式有效
移除手势
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] init];
if (did_delectBtn) {
for (UIView *view in [self.RowTableView subviews]) {
UITapGestureRecognizer *singleTapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTap:)];
tap = singleTapGestureRecognizer;
[singleTapGestureRecognizer setNumberOfTapsRequired:1];
[view addGestureRecognizer:singleTapGestureRecognizer];
view.backgroundColor = [UIColor blackColor];
}
}else{
for (UIView *view in [self.RowTableView subviews]) {
[view removeGestureRecognizer:tap];
}
}