Как ограничить компонент 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
}
Единственная проблема в том, что вы не можете коснуться текущего компонента прокрутки, пока компонент не завершил прокрутку. НАДЕЖДА, кто-то решит это тоже.