iOS scrollView 左右滑動 內(nèi)容錯位

環(huán)境:UIScrollView承載多個controller,頂部有選擇控制器的標題欄按鈕;

現(xiàn)象:頻繁的切換點擊標題欄按鈕,或左右滑動控制器,導致臨近兩控制的內(nèi)容發(fā)生重疊現(xiàn)象。

1.添加兩個布爾屬性
@property (nonatomic, strong) UIScrollView *contentView;
@property (nonatomic, assign) BOOL allowBtnCilck; //設置標志位,防止btn被頻繁的響應
@property (nonatomic, assign) BOOL isDragAction; //設置標志位,是否是拖動操作,防止btn被頻繁的響應
2. BOOL值的與判斷分別對應兩種情況:
- (void)titleClick:(UIButton *)button {    
    if (self.allowBtnCilck || self.isDragAction) {
        /*保證拖動事件和按鈕點擊事件互不干擾*/
        if (!self.isDragAction) {
            self.allowBtnCilck = NO;
            /*防止按鈕頻繁點擊,導致ScrollView內(nèi)容錯位*/
            self.contentView.userInteractionEnabled = NO;
            [self performSelector:@selector(allowBtnCilckAgain) withObject:nil afterDelay:0.3];
        }
        self.isDragAction  = NO;

      //下面的是按鈕響應的原先處理操作
       ..........................................
       ..........................................        
      }
}

- (void)allowBtnCilckAgain {
    self.allowBtnCilck = YES;
    self.contentView.userInteractionEnabled = YES;
}
1)頻繁切換點擊標題按鈕: self.allowBtnCilck 做一個延時處理;
2) 頻繁左右滑動ScrollView:

(1)在scrollView開始被拖動的時候,將 userInteractionEnabled 響應關(guān)掉:

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
    /*配對使用,開始拖動時候,不再允許響應*/
    self.contentView.userInteractionEnabled = NO;
}

(2)在scrollView動畫結(jié)束的時候,將 userInteractionEnabled 響應打開:

- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView {
    ............................
    ............................
    /*配對使用,滑動結(jié)束的時候,允許響應*/
    self.contentView.userInteractionEnabled = YES;
}
3) 交叉情況:如果沒有 self.isDragAction 標志位,左右滑動時,會觸發(fā)0.3秒的計時器,操作過快會造成整個控制器的偏移,所以加上它,手動側(cè)滑時,忽略掉計時器。
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
    [self scrollViewDidEndScrollingAnimation:scrollView];
   ...................................
   ...................................
    self.isDragAction = YES;
    [self titleClick:self.titlesView.subviews[index]];
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容

  • *7月8日上午 N:Block :跟一個函數(shù)塊差不多,會對里面所有的內(nèi)容的引用計數(shù)+1,想要解決就用__block...
    炙冰閱讀 2,546評論 1 14
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,288評論 25 708
  • 平靜的敘述,波濤的情感。沒有刻意渲染悲情,卻讓人久久不能平靜。當看到老人們不愿回憶的痛苦表情,說到一半不能自己,話...
    琢磨小可閱讀 190評論 0 0
  • 大禹治水,一十三年,三過家門,而不得入。車舟不停,奔波東西,披九山,通九澤,決九河,定九州,分民以食,遷民至豐,如...
    化濁閱讀 505評論 0 0