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