#05-hitTest練習1#

05-hitTest練習1

業務邏輯:
    底部一個按鈕, 按鈕的上面有一個View,遮擋在按鈕的上面.
    點擊View時, View接收事件,當發現點擊的點在按鈕的位置時, 讓底部的按鈕處理事件.
    
實現思路:
    實現View的touchBegain方法,先堅聽UIView的點擊.
    并去實現UIView的HitTest方法, 在hitTest方法當中通過把當前點轉換成按鈕所在的坐標系
        CGPoint btnP = [self convertPoint:point toView:self.btn];
    轉換過后查看當前點在不在按鈕上,如果在按鈕上,就直接返回按鈕.
    如果有在按鈕上,保持系統默認做法.
    
實現代碼:
    -(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event{
        判斷當前點在不在按鈕上.
        把當前點轉換成按鈕所在的坐標系
        CGPoint btnP = [self convertPoint:point toView:self.btn];
        if ([self.btn pointInside:btnP withEvent:event]) {
            return self.btn;
        }else{
           return [super hitTest:point withEvent:event];
        }
    }
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 一篇搞定事件傳遞、響應者鏈條、hitTest和pointInside的使用發生觸摸事件后,系統會將該事件加入到一個...
    克魯德李閱讀 1,144評論 0 1
  • 9死亡的概念對于沒有經歷過的人來說是個模糊的概念,當然,這種經歷不一定是自己的,也許是親朋好友的,也許只是偶爾聽說...
    胭脂熊閱讀 331評論 2 3
  • 讀《學會提問》 文:Recycler 50/136.1627 歡迎新朋友,給老朋友請安。 舊文加修改,還是要閉關 ...
    Recycler閱讀 371評論 0 1
  • 時間過得好快,難怪人人都說時光如箭,一轉眼今天已經是2016年的最后一天,再有幾個小時就是2017年的大年初一了。...
    實心實意閱讀 504評論 6 4
  • 突如其來的驚喜,一周年紀念日……
    墨先生_jin閱讀 122評論 0 0