Ustawianie właściwości UILabel
do YES
rozwiązuje problem podkreślając userInteractionEnabled
, ale również wyłącza UIPickerView
z autoscrolling aby wybrać wiersz, który został dotknięty.
Jeśli chcesz wyłączyć zachowanie podświetlania, ale utrzymać funkcjonalność domyślne autoscrolling UIPickerView
„s wywołać funkcję w UITableCell
przypadkach zawartych w UIPickerView
setShowSelection
. Sposobem na to jest do podklasy klasy UILabel
podobny do następującego:
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
Następnie, w którym wcześniej powrocie wystąpienie UILabel
w pickerView:viewForRow:forComponent:reusingView:
powrócić instancję PickerViewLabel
. Na przykład, używając kodu z Doug, zastąpisz wszystkie przypadki "UILabel
" z "PickerViewLabel
". Pamiętaj tylko, aby usunąć linię pickerRowLabel.userInteractionEnabled = YES;
.
Element showSelectionIndicator jest odpowiedzialny za wyświetlanie niebieskiego paska nad wartością, która zostanie zwrócona przez selektor. To niestety nie ma nic wspólnego z podstawową strukturą UITableViewCell. – Jon