在uipickerview中移动值比出错的时候更快

时间:2011-09-09 13:20:18

标签: iphone uitextfield uipickerview

我正在使用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 个答案:

答案 0 :(得分:1)

问题可以用if条件来解决。像:

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

{
    if(component == 0)
    {
    }
    if(component == 1)
    {
    }
    if(component == 2)
    {
    }
}

答案 1 :(得分:0)

Zohaib,如果我理解正确,你会很快滚动浏览3或4个组件吗?据我所知,方法- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component在实际选择一行时被触发,即滚动在此特定行结束,因此被“选中”。所以,我认为它只被调用一次是正确的。我假设你没有滚动 - 然后停止并多次这样做?

答案 2 :(得分:0)

我遇到了同时滚动多个组件的问题,最后只检测到一个选定的值。

我在Apple讨论中找到了某人提到的解决方案。

- (NSInteger)selectedRowInComponent:(NSInteger)component

使用上述方法查找选择器中的每个选定值并相应地更新,而不是依赖于选择器返回的行组件值。

希望有所帮助

答案 3 :(得分:0)

这是iOS 7的一个问题。我能够在一个只有一个组件的选择器的测试应用程序中重现这个问题。诀窍是让拾取器快速前进,以便最后有一个大的反弹(有时需要双击或三次滑动)。它只发生在10中大约1次,我似乎无法在iPhone上发生这种情况。不过我在Xcode 5.0的模拟器和运行7.0.6的Retina Display的iPad mini上看到了它。

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