在使用UIPickerView组件时,如果滚动过快,然后在滚动过程中点击确认,会导致- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
代理没有执行,出现没有选中的情况。
其中的一种解决方式:
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
// selectedRowInComponent:方法可获取滚动中选中的内容
[self pickerView:pickerView didScrollRow:[pickerView selectedRowInComponent:component] inComponent:component];
return self.data[component][row];
}
//UIPickerViewDelegate的方法,滚动完成调用这个方法
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
NSLog(@"%d-%d",row, component)
}
//为了统一自定义的方法,滚动中会调用这个方法
- (void)pickerView:(UIPickerView *)pickerView didScrollRow:(NSInteger)row inComponent:(NSInteger)component {
NSLog(@"%d-%d",row, component)
}
网友评论