Определение прокрутки UIPickerWheel
Эй, есть ли способ определить, прокручивает ли сейчас UIPickerView, мне действительно нужны эти функции для моего приложения, это действительно важно. Спасибо!
2 ответа
Существует метод UIPickerViewDelegate, который в основном срабатывает при каждой прокрутке средства выбора.
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
Установите делегата для вашего средства выбора, реализуйте этот метод и посмотрите, что происходит...
[РЕДАКТИРОВАТЬ] Хорошо, теперь я понимаю, что вам нужно. Реализуйте таймер, который проверяет состояние средства выбора.
checkTimer = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(checkPicker) userInfo:nil repeats:YES];
в приведенном выше методе делегата сохраните время последнего перемещения средства выбора.
lastPickerDate = [[NSDate date] retain];
в методе checkPicker проверьте, сколько времени прошло с последнего хода
NSTimeInterval timeSinceMove = -[lastPickerDate timeIntervalSinceNow];
если timeSinceMove больше, чем какое-либо желаемое значение, например, 0,5 секунды, установите для BOOL pickerMoving значение false. иначе установите его в true. Это не самый точный метод проверки движения, но я думаю, что он должен делать свою работу...
Есть хитрость, чтобы обнаружить это, но нет метода / свойства делегата, чтобы определить, прокручивается ли он или нет
- принять свойство как isScrolling
- установите isScrolling в true в
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String?
или эквивалентный метод - установите isScrolling в true в
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int)
надеюсь это поможет