如何限制UIPickerView组件

如何限制UIPickerView组件滚动。

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

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

使用此扩展 ,您可以检查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 } 

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