ios UIPickerView滚动速度太快

时间:2014-03-10 08:37:49

标签: ios objective-c scroll uitextfield uipickerview

我正在使用UIPickerViewUITextField一起在textField中输入值。 pickerView显示一系列数字,其中每个数字等于选择器视图中的行。

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
    return 1;
}

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent: NSInteger)component
{
    return self.max + 1;
}

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
    return [NSString stringWithFormat:@"%d", row];
}

当用户在选择器中选择一个值时,文本字段应反映该值:

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:      (NSInteger)component
{
    self.quantityField.text = [NSString stringWithFormat:@"%d", row];
}

但是,我注意到如果我过快地旋转选择器,传递给didSelectRow的行偶尔会与选择器中确定的行不匹配。有关为什么会发生这种情况以及如何防止这种情况的任何想法?

其中包含6的字段代表我的UITextField。正如您所看到的那样,选择器已在10上结算。

我的完整设置如下:

我有一个UITableView,其中包含多个自定义UITableViewCells。 每个单元格都有一个UITextField,用self.quantityField表示。

我设置了以下内容:

// pickerView represents the UIPickerView.
self.quantityField.inputView = self.pickerView;
UIToolbar *myToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0,_pickerView.frame.origin.y - 44, self.frame.size.width, 44)];

UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStylePlain target:self action:@selector(inputAccessoryViewDidFinish)];
doneButton.tintColor = [UIColor clearColor];
[myToolbar setItems:[NSArray arrayWithObject: doneButton] animated:NO];

self.quantityField.inputAccessoryView = myToolbar;

为了确保在单击完成按钮时关闭选取器视图,我实现了以下功能(已添加为action的{​​{1}}。

doneButton

每个选择器设置为显示数字0-10(11行)。

1 个答案:

答案 0 :(得分:1)

i have added a repo of the same工作得很好,猴子测试了它!

如果问题仍然存在,请根据您当前的应用程序对存储库进行更改,然后再进行调查!