【问题标题】:UIPickerView: Get row value while spinning?UIPickerView:旋转时获取行值?
【发布时间】:2009-10-02 18:02:09
【问题描述】:

我想在 iPhone 用户在 UIPickerView 中旋转轮子时实时获取行值(不仅仅是当轮子停留在特定行上时)。我研究了 UIPickerView 的子类化,然后覆盖了 mouseDown 方法,但我无法让它工作。任何建议将不胜感激。

【问题讨论】:

    标签: iphone uipickerview


    【解决方案1】:

    也许尝试实现委托方法:

    - (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
    

    您可以将其视为传递(只是传回 reusingView 参数),但每次调用它时,您都会知道当用户滚动时屏幕上出现了视图 - 然后您可以计算从该视图偏移的视图数量中心视图是。

    【讨论】:

    • 更简单:在该方法中,调用 - (NSInteger)selectedRowInComponent:(NSInteger) 组件,您将获得当前行并可以检索其值而无需计算偏移量或担心选择器的方式正在旋转。
    【解决方案2】:

    UIPickerView 尺寸相当一致。与其继承它,也许您可​​以在选择器视图顶部覆盖您自己的UIView,您可以从中跟踪和测量拖动运动,然后将这些触摸传递到选择器视图。

    【讨论】:

    • 除非你必须对任何给定阻力发生的旋转量进行逆向工程,在你放手之后......
    • 我不确定这个问题与子类化方法有什么不同。至少使用UIView 方法,它的代码可以更容易地用于其他目的。
    • 没错,任何只查看选择器视图输入的方法都会有同样的问题。
    【解决方案3】:

    您可以通过以下方法在 UIPickerView 层次结构中找到 UIScrollView:

    func findScrollView(view:UIView) -> UIScrollView? {
        if view is UIScrollView {
            return view as? UIScrollView
        }
        for subview in view.subviews {
            if subview is UIView {
                let result = findScrollView(subview as UIView)
                if result != nil {
                    return result
                }
            }
        }
        return nil
    }
    

    实现和设置 UIScrollViewDelegate:

    let scrollView = findScrollView(pickerView)
    if scrollView != nil {
        scrollView!.delegate = self
    }
    

    并检测当前选中的项目:

    func scrollViewDidScroll(scrollView: UIScrollView) {
        let offset = scrollView.contentOffset.y
        let index = Int(offset/itemHeight)
        if index >= 0 && index < items.count {
            let item = items[index]
            // do something with item
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-15
      • 1970-01-01
      相关资源
      最近更新 更多