項目中關于同時給多個view添加手勢??的問題

先看兩個代碼的不同:

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];

? ? ? ? }

? ? }

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容