子視圖超出父視圖的狀況下依舊能夠觸發事件
如圖: 前端
這種狀況下,咱們能夠重寫父視圖的hitTest:withEvent:
方法,得到焦點,而後判斷焦點位置,最後交給誰來處理這個時間 解決方案以下:bash
-(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];
}
}
複製代碼