Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何限制UIPickerView组件_Ios_Objective C_Uipickerview_Uipickerviewcontroller - Fatal编程技术网

Ios 如何限制UIPickerView组件

Ios 如何限制UIPickerView组件,ios,objective-c,uipickerview,uipickerviewcontroller,Ios,Objective C,Uipickerview,Uipickerviewcontroller,如何限制UIPickerView组件滚动 我在UIPickeView1秒组件结束滚动中有两个组件,允许用户触摸第一个组件以更改其中的值 如何限制用户触摸组件1,直到第二个组件滚动完成。使用,您可以检查UIPickerView是否滚动。根据滚动,您可以启用/禁用与UIPickerView的交互 extension UIView { func isScrolling () -> Bool { if let scrollView = self as? UIScroll

如何限制
UIPickerView
组件滚动

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

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

使用,可以检查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
}
唯一的问题是你不能触摸当前的滚动组件,直到组件完成滚动。希望有人也能解决这个问题