UIPickerView在滚动中读取选中位置

在使用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)
}

你可能感兴趣的:(UIPickerView在滚动中读取选中位置)