IOS 滑動手勢沖突 判斷滑動方向

最近在寫百度地圖的時候發(fā)現(xiàn)地圖和scrollView和tableView的滑動手勢會沖突,這里以百度地圖作為示例寫一遍解決方法

首先遵循UIGestureRecognizerDelegate代理方法
然后在你需要禁止滑動的scrollView添加手勢
// 給第一個tableView添加手勢
UIGestureRecognizer *mainScrollVTap = [[UIGestureRecognizer alloc]init];
mainScrollVTap.delegate=self;
[scroAll addGestureRecognizer:mainScrollVTap];
// 給最底部的scrollview 添加手勢
UIGestureRecognizer *mainScrollVTap = [[UIGestureRecognizer alloc]init];
mainScrollVTap.delegate=self;
[scroAll addGestureRecognizer:mainScrollVTap];
在地圖上添加點擊手勢
_mapView = [[BMKMapView alloc]initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, PTTotalHeight/5*2)];
_mapView.userTrackingMode = BMKUserTrackingModeFollow;//設(shè)置定位的狀態(tài)
_mapView.delegate = self;
_mapView.showsUserLocation = YES;//顯示定位圖層
[scroRoute addSubview:_mapView];
//給地圖加手勢以解決滑動沖突
UITapGestureRecognizer *provinceMapTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(provinceMapTapped)];
provinceMapTap.delegate = self;
[_mapView addGestureRecognizer:provinceMapTap];
最后實現(xiàn)手勢代理方法判斷出需要觸發(fā)哪一個手勢
#pragma mark 手勢代理方法 ,判斷觸摸的是地圖還是外層的view
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{
    //判斷如果是百度地圖的view 既可以實現(xiàn)手勢拖動 scrollview 的滾動關(guān)閉
    if ([gestureRecognizer.view isKindOfClass:[BMKMapView class]] ){
        scroAll.scrollEnabled = NO;
        scroRoute.scrollEnabled = NO;
        return YES;
    }else{
        scroAll.scrollEnabled = YES;
        scroRoute.scrollEnabled = YES;
        return NO;
    }
}
需要注意的一點是給地圖添加了點擊手勢需要實現(xiàn)方法,不然會崩潰
-(void)provinceMapTapped{
}
演示效果
示例.gif

順便整理一下如何判斷scrollView的滑動方向

聲明變量
@interface ViewController ()<UIScrollViewDelegate>
{
    UIScrollView *scro;
    float lastContentOffsetX;
    float lastContentOffsetY;
}
在scrollViewWillBeginDragging方法里記錄開始前的X、Y值
-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
    lastContentOffsetY = scrollView.contentOffset.y;
    lastContentOffsetX = scrollView.contentOffset.x;
}
在scrollViewDidScroll方法里判斷滑動方向
-(void)scrollViewDidScroll:(UIScrollView *)scrollView {
    if(scrollView.contentOffset.y>lastContentOffsetY){
        NSLog(@"向上滑動");
    }else if(scrollView.contentOffset.y<lastContentOffsetY){
        NSLog(@"向下滑動");
    }
    if(scrollView.contentOffset.x<lastContentOffsetX){
        NSLog(@"向左滑動");
    }else if(scrollView.contentOffset.x>lastContentOffsetX){
        NSLog(@"向右滑動");
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,172評論 4 61
  • 轉(zhuǎn)載注明出處:http://www.itdecent.cn/p/87a41b8c0dd0 前言 在Android開...
    王三的貓阿德閱讀 29,189評論 43 85
  • 現(xiàn)在很多人都玩Cosplay,可是模仿的多是漫畫中的人物,殊不知,漢服才是美到爆的服飾呀。優(yōu)雅高貴的氣質(zhì),迷人的韻...
    c0931d356885閱讀 555評論 0 2
  • 蘇軾(1037-1101),北宋文學家、書畫家。字子瞻,又字和仲,號東坡居士。漢族,眉州眉山(今屬四川)人。...
    曲亞軒閱讀 315評論 1 1
  • 接下來的行程是清清農(nóng)場。這里的主要亮點是綿羊秀和馬術(shù)表演。我們這篇先來看一看綿羊秀。眾所周知,羊向來是靠乖巧可愛溫...
    信長工閱讀 265評論 0 0

友情鏈接更多精彩內(nèi)容