iIOS之重寫TabBar使凸出的部分有效果

#pragma mark -- 重寫hitTest方法,去監聽發佈按鈕的點擊,目的是爲了讓凸出的部分點擊也有反應
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    //這一個判斷是關鍵,不判斷的話push到其餘頁面,點擊發布按鈕的位置也是會有反應的,這樣就很差了
    //self.isHidden == NO 說明當前頁面是有tabbar的,那麼確定是在導航控制器的根控制器頁面
    //在導航控制器根控制器頁面,那麼咱們就須要判斷手指點擊的位置是否在發佈按鈕身上
    //是的話讓發佈按鈕本身處理點擊事件,不是的話讓系統去處理點擊事件就能夠了
    if (self.workItem) {
        if (self.isHidden == NO) {
            
            //將當前tabbar的觸摸點轉換座標系,轉換到發佈按鈕的身上,生成一個新的點
            CGPoint newP = [self convertPoint:point toView:self.workItem];
            
            //判斷若是這個新的點是在發佈按鈕身上,那麼處理點擊事件最合適的view就是發佈按鈕
            if ( [self.workItem pointInside:newP withEvent:event]) {
                return self.workItem;
            }else{//若是點不在發佈按鈕身上,直接讓系統處理就能夠了
                
                return [super hitTest:point withEvent:event];
            }
        }
        
        else {//tabbar隱藏了,那麼說明已經push到其餘的頁面了,這個時候仍是讓系統去判斷最合適的view處理就行了
            return [super hitTest:point withEvent:event];
        }
    }
    else {//tabbar隱藏了,那麼說明已經push到其餘的頁面了,這個時候仍是讓系統去判斷最合適的view處理就行了
        return [super hitTest:point withEvent:event];
    }
}
相關文章
相關標籤/搜索