需求是詳情頁(yè)展示部分?jǐn)?shù)據(jù), 下方展示地圖.
理想:
當(dāng)tableView滾動(dòng)到底部時(shí), 地圖完全展現(xiàn), 此時(shí)滑動(dòng)地圖, 響應(yīng)地圖事件. 然而tableView與百度地圖手勢(shì)沖突.
核心代碼:
1. 將tableView.bounces設(shè)置為NO; 因彈性動(dòng)畫(huà)存在時(shí), 只有當(dāng)動(dòng)畫(huà)完全結(jié)束時(shí)才能判斷tableView是否滑動(dòng)到底部, 當(dāng)動(dòng)畫(huà)還未結(jié)束, 用戶(hù)滑動(dòng)地圖后, 依然響應(yīng)tableView的手勢(shì),而非地圖.
2. tableView遵守UIGestureRecognizerDelegate并實(shí)現(xiàn)方法-(BOOL)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizer shouldReceiveTouch:(UITouch*)touch;
實(shí)現(xiàn)如下:
- (BOOL)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizer shouldReceiveTouch:(UITouch*)touch {
//判斷tableView是否滑動(dòng)到最底部(或最頂部,此處最底), round函數(shù):四舍五入
if (round(self.contentOffset.y) == round(self.contentSize.height - self.frame.size.height)) {
// 判斷當(dāng)前View是否是百度地圖的手勢(shì)處理視圖TapDetectingView.
if([NSStringFromClass([touch.view class])isEqual:@"TapDetectingView"]){
//若為百度地圖的手勢(shì)處理視圖TapDetectingView則tableView的手勢(shì)事件不響應(yīng)
return NO;
}
}
return YES;
}