如何限制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 }
唯一的问题是您无法触摸当前滚动组件,直到组件完成滚动。 希望,也有人解决这个问题。