Définition de la propriété userInteractionEnabled
de UILabel
à YES
fixe la question mise en évidence, mais il désactive aussi le UIPickerView
de défilement automatique pour sélectionner la ligne qui a été touché.
Si vous souhaitez désactiver le comportement de mise en évidence, mais maintenir la fonctionnalité de défilement automatique par défaut de UIPickerView
, appelez le dans les instances UITableCell
fonction setShowSelection
contenues dans le UIPickerView
. Une façon de le faire est de sous-classe de la classe UILabel
semblable au suivant:
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
Alors, où vous aviez été retournerez une instance de UILabel
dans pickerView:viewForRow:forComponent:reusingView:
, retourner une instance de PickerViewLabel
. Par exemple, en utilisant le code de Doug, vous devez remplacer tous les cas de 'UILabel
' par 'PickerViewLabel
'. N'oubliez pas de supprimer la ligne pickerRowLabel.userInteractionEnabled = YES;
.
L'indicateur showsSelectionIndicator est responsable de l'affichage de la barre bleue sur la valeur qui sera renvoyée par le sélecteur. Il n'a malheureusement rien à voir avec la structure sous-jacente UITableViewCell. – Jon