如何检测UIScrollView是滚动还是拖动

Ale*_*Tau 13 objective-c ios

当我的UIScrollView滚动或拖动时,我需要不断地知道.

小智 26

实现这两个委托方法..

- (void)scrollViewDidScroll:(UIScrollView *)sender{
  //executes when you scroll the scrollView
}

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
 // execute when you drag the scrollView
}
Run Code Online (Sandbox Code Playgroud)

  • "滚动scrollView时执行" - 如果用户是"你"则不完全正确.以编程方式移动scrollview也会调用`scrollViewDidScroll:`. (2认同)

obe*_*ber 15

更好地使用isTracking

func scrollViewDidScroll(_ scrollView: UIScrollView) {

    if scrollView.isTracking {   
    // ... 
    }
}
Run Code Online (Sandbox Code Playgroud)


cod*_*rut 7

替代@ Shorhashi的解决方案:

- (void)scrollViewDidScroll:(UIScrollView *)sender{
    if(sender.isDragging) {
        //is dragging
    }
    else {
        //is just scrolling
    } 
}
Run Code Online (Sandbox Code Playgroud)

  • scrollView.isTracking 是根据下面 ober 的答案的正确答案。 (2认同)