通過添加手勢(shì)的方法處理CALayer的點(diǎn)擊事件

當(dāng)給UIView添加Animation動(dòng)畫時(shí),項(xiàng)目需要添加點(diǎn)擊事件。
但是使用UIButton無(wú)效,不響應(yīng)點(diǎn)擊事件。
baidu / google 之。
發(fā)現(xiàn)UILayer不響應(yīng)事件。
換一種思路,發(fā)現(xiàn)可以給整個(gè)視圖添加點(diǎn)擊手勢(shì),然后判斷點(diǎn)擊位置來(lái)觸發(fā)事件。

代碼片段

//創(chuàng)建手勢(shì)添加到視圖上
self.tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(click:)];
[self.view addGestureRecognizer:self.tapGesture];

#pragma mark - 點(diǎn)擊
/** 點(diǎn)擊事件*/
-(void)click:(UITapGestureRecognizer *)tapGesture {

    CGPoint touchPoint = [tapGesture locationInView:self];
    //遍歷當(dāng)前視圖上的子視圖的presentationLayer 與點(diǎn)擊的點(diǎn)是否有交集
    for (UIView *subView in self.view.subviews) {
        if ([subView.layer.presentationLayer hitTest:touchPoint]) {
            NSLog(@"點(diǎn)擊的是:%@",subView);
        }
    }
}
打完收工
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 好奇觸摸事件是如何從屏幕轉(zhuǎn)移到APP內(nèi)的?困惑于Cell怎么突然不能點(diǎn)擊了?糾結(jié)于如何實(shí)現(xiàn)這個(gè)奇葩響應(yīng)需求?亦或是...
    Lotheve閱讀 58,075評(píng)論 51 603
  • -- iOS事件全面解析 概覽 iPhone的成功很大一部分得益于它多點(diǎn)觸摸的強(qiáng)大功能,喬布斯讓人們認(rèn)識(shí)到手機(jī)其實(shí)...
    翹楚iOS9閱讀 3,008評(píng)論 0 13
  • 在iOS開發(fā)中經(jīng)常會(huì)涉及到觸摸事件。本想自己總結(jié)一下,但是遇到了這篇文章,感覺總結(jié)的已經(jīng)很到位,特此轉(zhuǎn)載。作者:L...
    WQ_UESTC閱讀 6,133評(píng)論 4 26
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,246評(píng)論 4 61
  • 第十五條:使可變性最小 1.什么是不可變類? (1)需要的所有參數(shù)必須在實(shí)例化的時(shí)候都傳進(jìn)去。(2)對(duì)象中所有信息...
    想飛的僵尸閱讀 642評(píng)論 2 2