我正在使用UIPickerView
和UITextField
一起在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行)。
答案 0 :(得分:1)
i have added a repo of the same工作得很好,猴子测试了它!
如果问题仍然存在,请根据您当前的应用程序对存储库进行更改,然后再进行调查!