is there a uipickerview delegate method like scrollviewDidScroll?

Use following method,

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
     // put your logic here.
}

Above method is from UIPickerViewDelegate, If user selects any element using pickerview, this method is automatically triggered.

Hope it helps to you.

Edit :

I think you should use following method for detecting – in which direction user is scrolling ?

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
    NSLog(@"scrolling to row is %@",[NSString stringWithFormat:@"index_%i",row]);
    return [NSString stringWithFormat:@"index_%i",row];
}

whenever user is scrolling up/down above method is triggered automatically which is similar to UITableView. Remember UIPickerView is using UIPickerTableView which is private, so we can not detect the scrolling the way you want to have.

Let me explain the detecting the direction in pickerview.

Example. Visible rows are index_4,index_5,index_6,index_7. Now if user is scrolling down index_8 will be called. Similarly if user is scrolling to up index_3 will be called.

I hope this trick will solve your problem. Even-though let me know your feedback on this.

Leave a Comment