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