Einstellen der userInteractionEnabled
Eigenschaft UILabel
zu YES
behebt die Hervorhebung Problem, aber es sperrt auch die UIPickerView
von Autoscrolling die Zeile auszuwählen, die berührt wurde.
Wenn Sie die Markierung Verhalten deaktivieren möchten, aber die UIPickerView
‚s Standard Autoscrolling Funktionalität zu erhalten, rufen Sie die setShowSelection
Funktion in den UITableCell
Instanzen im UIPickerView
enthalten. Ein Weg, dies zu tun, ist die UILabel
Klasse ähnlich den folgenden Unterklasse:
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
Dann wo hatten Sie vorher eine Instanz von UILabel
in pickerView:viewForRow:forComponent:reusingView:
worden Rückkehr gibt eine Instanz von PickerViewLabel
. Wenn Sie beispielsweise den Code Doug verwenden, würden Sie alle Fälle von "UILabel
" durch "PickerViewLabel
" ersetzen. Denken Sie daran, die pickerRowLabel.userInteractionEnabled = YES;
Linie zu entfernen.
Der showSelectionIndicator ist verantwortlich für die Anzeige des blauen Balkens über dem Wert, der vom Picker zurückgegeben wird. Es hat leider nichts mit der zugrunde liegenden UITableViewCell-Struktur zu tun. – Jon