【问题标题】:How to restrict UIPickerView Component如何限制 UIPickerView 组件
【发布时间】:2016-06-28 05:41:48
【问题描述】:

如何限制UIPickerView组件滚动。

我在UIPickeView 中有两个组件,第二个组件结束滚动允许用户触摸第一个组件来更改其中的值。

我如何限制用户触摸组件一,除非第二个组件滚动补充。

【问题讨论】:

    标签: ios objective-c uipickerview uipickerviewcontroller


    【解决方案1】:

    使用this extension,您可以检查 UIPickerView 是否滚动。取决于滚动,您可以启用/禁用与 UIPickerView 的交互。

    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
        }
    }
    

    UIPickerViewDelegate 检测滚动与否。

    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
    
        if pickerView.isScrolling() {
            pickerView.isUserInteractionEnabled = false
        } else {
            pickerView.isUserInteractionEnabled = true
        }
    
        //Use this for reduce lines
        //pickerView.isUserInteractionEnabled = !pickerView.isScrolling()
    
        return "Row \(row)"
    }
    
    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        pickerView.isUserInteractionEnabled = true
    }
    

    唯一的问题是你不能触摸当前的滚动组件,直到组件完成滚动。希望,也有人解决这个问题。

    【讨论】:

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