Когда значения перемещаются в uipickerview быстрее, чем что-то пошло не так - PullRequest
2 голосов
/ 09 сентября 2011

У меня UITextField и замена клавиатуры iPhone на UIPickerView с 3–4 компонентами подряд, проблема, с которой я сталкиваюсь, заключается в том, что когда я перемещаю значения 3 или 4 компонентов быстрее, чем могусобытие - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component запускается одно, и обновляется только значение только одного компонента, который был выбран в конце.Как я могу это исправить?Есть ли какой-либо метод, кроме - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger) компонента, чтобы решить эту проблему?

спасибо

Ответы [ 4 ]

1 голос
/ 09 сентября 2011

проблема может быть решена с помощью условий.как:

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component

{
    if(component == 0)
    {
    }
    if(component == 1)
    {
    }
    if(component == 2)
    {
    }
}
0 голосов
/ 19 марта 2014

Это проблема с iOS 7. Мне удалось воспроизвести это в тестовом приложении со средством выбора только с одним компонентом.Хитрость заключается в том, чтобы заставить сборщик двигаться очень быстро, чтобы в конце был большой отскок (иногда требуется двойной или тройной удар).Это случается только 1 раз в 10, и я не могу этого добиться на iPhone.Однако я видел это как на симуляторе в Xcode 5.0, так и на моем iPad mini с Retina Display 7.0.6.

https://dl.dropboxusercontent.com/u/36715615/UIPickerViewTest.zip

0 голосов
/ 31 октября 2011

Я столкнулся с той же проблемой одновременной прокрутки нескольких компонентов, в итоге обнаруживается только одно выбранное значение.

Я нашел решение, упомянутое кем-то в обсуждении Apple.

- (NSInteger)selectedRowInComponent:(NSInteger)component

Вместо того, чтобы полагаться на значение компонента строки, возвращаемое средством выбора, используйте вышеуказанный метод, чтобы найти каждое выбранное значение в вашем средстве выбора и обновить соответствующим образом.

Надеюсь, это поможет

0 голосов
/ 09 сентября 2011

Зохайб, если я правильно понимаю, вы очень быстро пролистываете 3 или 4 компонента? Насколько мне известно, метод - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component запускается, когда строка фактически выбрана, то есть прокрутка заканчивается в этой конкретной строке, и поэтому она «выбирается». Таким образом, я бы предположил, что это правильно, потому что звонили только один раз. Я полагаю, вы не прокручиваете, а затем останавливаетесь и делаете это несколько раз?

...