Когда я делаю длинный сборщик с несколькими компонентами, только компоненты рядом с центром реагируют на функцию выбора касанием.
Например, если вы хотите выбрать следующую строку под выбранной строкой, вы должны иметь возможность просто коснуться ее, чтобы оживить ее в области выбора. Эта функция все еще существует в iOS 7, но область в UIPicker, которая фактически принимает нажатие, представляет собой очень маленькое окно, не более 200 пикселей.
Есть ли способ расширить эту доступную для касания область, чтобы включить в нее весь UIPickerView, чтобы каждый раз, когда вы касались строки, она становилась выделенной?
ИЗМЕНИТЬ вот код, он довольно стандартный ...
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
NSLog(@"picked %i %i" , component , row);
}
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
return 4;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
return 15;
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
return @"";
}
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
{
UILabel *pickersLabel;
pickersLabel =[[UILabel alloc] initWithFrame:CGRectMake(0.0, 0.0, view.frame.size.width , view.frame.size.height )];
pickersLabel.text = [NSString stringWithFormat:@"thing %i" , row ];
pickersLabel.backgroundColor = [UIColor clearColor];
pickersLabel.backgroundColor = [UIColor colorWithRed:1/255.0 green:1/255.0 blue:2/255.0 alpha:0.05];
pickersLabel.opaque = NO;
[view addSubview:pickersLabel];
return pickersLabel;
}