UIPickerView,检测"滚轮"启动和停止?

ang*_*son 6 uipickerview xamarin.ios ios

我刚刚发现如果我做以下事情:

  1. 单击将动画显示UIPickerView在我的视图中的按钮
  2. 快速启动车轮朝向最后一个项目滚动,然后经过
  3. 使用按钮关闭视图

然后它还没有选择最后一个项目.

我试图通过在didSelectRow方法被触发时简单地输出到控制台,并且当车轮稳定在最后一个项目时它会触发.

我可以检测到车轮仍然在滚动,这样我可以延迟检查它是否有选定值,直到它稳定下来?

如果重要的是,我正在使用MonoTouch进行编程,但如果您有一个代码示例,我可以很好地阅读Objective-C代码以重新实现它.

小智 7

由于动画键不起作用,我编写了这个简单的函数,用于检测UIPickerView当前是否正在移动.

-(bool) anySubViewScrolling:(UIView*)view
{
    if( [ view isKindOfClass:[ UIScrollView class ] ] )
    {
        UIScrollView* scroll_view = (UIScrollView*) view;
        if( scroll_view.dragging || scroll_view.decelerating )
        {
            return true;
        }
    }

    for( UIView *sub_view in [ view subviews ] )
    {
        if( [ self anySubViewScrolling:sub_view ] )
        {
            return true;
        }
    }

    return false;
}
Run Code Online (Sandbox Code Playgroud)

它最终返回真正的五个级别.


ilu*_*_GR 5

带有@DrainBoy 答案扩展名的Swift 4(更新)版本

extension UIView  {
 func isScrolling () -> Bool {

    if let scrollView = self as? UIScrollView {
        if  (scrollView.isDragging || scrollView.isDecelerating) {
            return true
        }
    }

    for subview in self.subviews {
        if ( subview.isScrolling() ) {
            return true
        }
    }
    return false
 }
}
Run Code Online (Sandbox Code Playgroud)


Joe*_*ets -1

我认为你可以检查 UIPickerView 是否处于动画状态并等待它停止。此处已回答此问题链接