1. 程式人生 > >【iOS】Button點選事件被其父檢視點選手勢UITapGestureRecognizer的遮蔽問題

【iOS】Button點選事件被其父檢視點選手勢UITapGestureRecognizer的遮蔽問題

前幾天在做專案的時候,遇到這個一個問題,在一個檢視也就是UIView上新增一個手勢,然後又在這個View上新增一個UIButton,然後給按鈕新增事件,執行專案的時候我發現,不管是點選按鈕還是檢視上的別的地方執行的都是手勢所擁有的方法,後來到網上找才發現是手勢把按鈕的方法給遮蔽了,那怎麼解決了正確的方法是給手勢設定代理,然後在代理中進行判斷如果點選事件是由Button執行的,那就不執行手勢,那麼系統會呼叫按鈕所擁有的方法。具體的如下:

<span style="font-family: Arial, Helvetica, sans-serif;"></span><pre name="code" class="objc"><span style="font-family: Arial, Helvetica, sans-serif;"></span><pre name="code" class="objc">UIView* showListView=[[UIView alloc] initWithFrame:[[UIScreen mainScreen]  bounds]];  
UITapGestureRecognizer* showTap=[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(showGes:)];  
showTap.delegate=self;//設定代理  UITapGestureRecognizer的代理為UITapGestureRecognizerDelegate
tapGesture.cancelsTouchesInView = NO;//為NO時view的點選手勢覆蓋子檢視響應,為YES時view的點選手勢對其所有子檢視無效
[showListView addGestureRecognizer:showTap];  
[showTap release];  
</pre><pre>
<span style="font-family: Arial, Helvetica, sans-serif;">//建立View上的button</span>
UIButton* btn=[UIButton buttonWithType:UIButtonTypeCustom];  
btn.frame=CGRectMake(100.0,200.0,100.0,35.0);  
[btn addTarget:self action:@selector(coverViewChoose:) forControlEvents:UIControlEventTouchUpInside];  
[showListView addSubView:btn];  

#pragma mark--UIGestureRecognizerDelegate  
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch  
{  
    if([touch.view isKindOfClass:[UIButton class]])  
    {  
        return NO;  
    }  
    return YES;  
} 


相關推薦

iOSButton事件其父檢視手勢UITapGestureRecognizer遮蔽問題

前幾天在做專案的時候,遇到這個一個問題,在一個檢視也就是UIView上新增一個手勢,然後又在這個View上新增一個UIButton,然後給按鈕新增事件,執行專案的時候我發現,不管是點選按鈕還是檢視上的別的地方執行的都是手勢所擁有的方法,後來到網上找才發現是手勢把按鈕的方法給

iOS播放按鈕音效

有點選按鈕產生音效的需求 /** 設定簽到音效 @param name 音效名稱 @param soundtype 音效型別 @param playtype 播放型別 */ -(void)playSoundWithName:(NSString *)name soundtype:

IOS實現IOS版的抽屜效果(,拖拽滑動)

原文連結:http://blog.csdn.net/toss156/article/details/7400065 好像最近,看到好多Android上的抽屜效果,也忍不住想要自己寫一個。在Android裡面可以用SlidingDrawer,很方便的實現。IOS上面就只有自

Android子控制元件搶佔父控制元件事件問題

有一個全屏的Activity,根佈局是RecyclerView,每個item佔一個螢幕,item內包含一個預覽圖片。需求是,在這個介面手指下滑,直接退出這個Activity。誤區:一開始我在這個Activity的根佈局設定了點選事件,在TouchEvent中的ACTION_D

事件循化累加呼叫,沒一次 事件執行次數比上一次+1,解決

利用jquery的unbind方法, $('#id').unbind('click').bind('click',function(){ //事件處理 }); 定義和用法 unbind() 方法移除被選元素的事件處理程式。 該方法能夠移除所有的或被選的事件處理程式,或者當事件發生

IOS放棄右滑返回後,標題欄上出現了3個藍

Q: 當你自定義了leftBarButtonItem或titleView時,並enable了右滑返回功能,此時,如果進行右滑假返回操作(即右滑後不鬆開手左滑回去)時,在UINavgationBar的leftBarButtonItem或titleView上出現了三個藍色的點

iOSUITabView/UICollectionView 全問題

Recently in my new project I need to select all the cell data in my UITabViewCell and UICollectionViewCell, and need to do some operations with

iOSUITableView Cell自定義單功能

今天分享下cell的單選,自定義的,不是下圖這種網上找到的打對勾的,我搜了好久,基本上都是打對勾的文章,就決定自己寫一篇。基本上自己的app都會有一個風格吧,咱也不能一直用打對勾的方式去做(看起來是不是很low)。 我們要實現的是下面的這種形式。瞬間好看了

iOS拍照/相簿單、相簿多、圖片瀏覽、圖片裁剪

有一段時間沒有寫iOS系列的部落格了。最近由於專案的需要,就有封裝了一個拍照/相簿單選、相簿多選、圖片瀏覽、圖片裁剪的工具類。在封裝這這類是站在巨人的肩膀上做的。 1.ZLPhotoBrowser:https://github.com/longitachi/Z

iOSUITbableView中cell的單狀態和多狀態

在之前的一篇《【iOS】UITableView中section的展開和收起》我們介紹了UITableView中section的展開和收起。當時的處理思路是給每一行的section一個狀態標記。在這一篇cell的單選也是才去的這樣一種處理思路。 思路: 1.初始的時候給每一個

iOS代理傳值與塊代碼傳值

ring 方法 nslog 設置代理 轉載 adf delegate alloc 代理傳值 主線程與子線程常常須要進行數據的傳遞。不同的類之間,不同的控制器之間都須要。 並且常常須要監聽一個動作的完畢。而後才去做對應事件。(代理是一對一的關系)。 一、代理傳值 代理

iOSUICollectionView自己定義Layout之蜂窩布局

with top http reserve src 布局 step object .com 網上的UICollectionView的Layout布局,其cell的形狀多為矩形和圓形。 本篇博文將正六邊形作為cell的基本形狀,為您展現獨特的蜂窩布局效果及實現源代碼。 幫

iOSUIDynamicAnimator動畫

set translate logs enc ica cgpoint isp mat .cn 創建動畫 1 UIDynamicAnimator *animator = [[UIDynamicAnimator alloc] initWithReferenceView:sel

手工測試不能取代的13個原因

輸出 class 否則 運行 幫助 不同的 工作 支持 移動 原文轉自:https://mp.weixin.qq.com/s?__biz=MjM5NjQ4MzI5MA==&mid=2650584997&idx=1&sn=8e9314af7a8

錯誤: ORA-01591: 鎖未決分布式事務處理 7.2.428982 持有--解決方案

link trying 清除 fault locked fail 自動 針對 阻止 SQL 錯誤: ORA-01591: 鎖被未決分布式事務處理 7.2.428982 持有 01591. 00000 - "lock held by in-doubt distribute

使用js觸發事件

rda ctype rem odi scroll cancel script 事件 some 如果大家將一張網頁看成一個form的話,大致上就成了一個web form的模型。在win form 下要想手動觸發某一個對象的事件是很簡單的,只要發送一條消息即可達成。

js中的事件委托或是事件代理詳解

ava 程序 fff 員工 我們 cnblogs 上傳 on() 類型 起因: 1、這是前端面試的經典題型,要去找工作的小夥伴看看還是有幫助的; 2、其實我一直都沒弄明白,寫這個一是為了備忘,二是給其他的知其然不知其所以然的小夥伴們以參考; 概述: 那什麽叫

JavaScript計數器+classList使用-純js案例:全

nta ava count 改變 markdown 精簡 javascrip 案例 標簽 這兩天做了一個全選反選的案例,用了幾種方法,剛開始寫的磕磕絆絆,聽老師講解後理清思路,再來寫就很容易了。其實還是寫代碼時候的思路問題。首先要分析功能,然後分步實現,不要攪在一起。下面幾

jqeury之click事件[添加及刪除數據]

gpo utf 電話 列表 方式 3.1 rip 動態 utf-8 要求:1.添加數據顯示在下方列表。2.添加的數據可動態刪除。 界面顯示: 代碼: <!DOCTYPE html> <html> <head> <scri

CF757GCan Bash Save the Day? 可持久化分樹

find ons lin 問題 node printf sin 預處理 family 【CF757G】Can Bash Save the Day? 題意:給你一棵n個點的樹和一個排列${p_i}$,邊有邊權。有q個操作: 1 l r x:詢問$\sum\limits_{