先看兩個代碼的不同:
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];
? ? ? ? }
? ? }