Установка свойства userInteractionEnabled
для UILabel
в YES
устраняет проблему выделения, но также отключает автоматическую прокрутку UIPickerView
для выбора строки, к которой вы прикоснулись.
Если вы хотите отключить режим выделения, но сохранить функцию автопрокрутки по умолчанию UIPickerView
, вызовите функцию setShowSelection
в экземплярах UITableCell
, содержащихся в UIPickerView
. Один из способов сделать это - создать подкласс класса UILabel
, подобный следующему:
PickerViewLabel.h -
#import <UIKit/UIKit.h>
@interface PickerViewLabel:UILabel
{
}
@end
PickerViewLabel.m -
#import "PickerViewLabel.h"
@implementation PickerViewLabel
- (void)didMoveToSuperview
{
if ([[self superview] respondsToSelector:@selector(setShowSelection:)])
{
[[self superview] performSelector:@selector(setShowSelection:) withObject:NO];
}
}
@end
Затем, когда вы ранее возвращали экземпляр UILabel
в pickerView:viewForRow:forComponent:reusingView:
, возвращайте экземпляр PickerViewLabel
. Например, используя код из Doug , вы заменили бы все случаи 'UILabel
' на 'PickerViewLabel
'. Просто не забудьте удалить строку pickerRowLabel.userInteractionEnabled = YES;
.