1. 程式人生 > >ios button超出父檢視如何響應事件

ios button超出父檢視如何響應事件


 今天中午吃飯的時候,公司一哥們突然問了我一句,怎麼做一個超出tabBar高度的按鈕,而且還能響應事件,吃完飯之後,我思索了一下,決定動手試試,其實邏輯很簡單,只需要繼承UITabBarController,重新自定義一個TabBarController就基本OK了,這裡只貼出部分程式碼。

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
  
 UIView *view = [super hitTest:point withEvent:event];

  NSLog(@"1-----%f------%f",point.x,point.y);
  // 將point的x,y從以self為座標系轉換到以self.fb為座標系進行參考

  // self.fb是一個按鈕
  CGPoint buttonPoint = [self.fb convertPoint:point fromView:self];
  NSLog(@"2-----%f------%f",buttonPoint.x,buttonPoint.y);
  if ([self.fb pointInside:buttonPoint withEvent:event]) {
    return self.fb;
  }
  return view;
}

主要是重寫這個方法,樓主比較懶,寫的比較簡單,只是告訴大家基本的思路。

注意,比較難懂的就是如何巧妙的轉換座標系。

關於座標系之間的轉換,樓主正在研究,一定會盡快跟大家分享的。