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)
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。