2010-10-14 8 views
3

J'utilise le code suivant pour ajouter une étiquette et une vue à un UIPickerView.UIPickerView avec affichage personnalisé et étiquettes ne défilant pas

- (UIView *)pickerView:(UIPickerView *)pickerView 
     viewForRow:(NSInteger)row 
     forComponent:(NSInteger)component 
     reusingView:(UIView *)view { 


CustomPickerView *customView = [[CustomPickerView alloc] initWithFrame:CGRectMake(0.0, 0.0, 180, 32)]; 

CustomPickerLabel *pickerLabelLeft = [[CustomPickerLabel alloc] initWithFrame:CGRectMake(0.0, 0.0, 80, 32)]; 
[pickerLabelLeft setTextAlignment:UITextAlignmentRight]; 
pickerLabelLeft.backgroundColor = [UIColor clearColor]; 
[pickerLabelLeft setText:@"1234"]; 

[customView addSubview:pickerLabelLeft]; 

return customView; 

}

La raison pour laquelle j'utilise une vue parce que je veux ajouter deux étiquettes à ce point de vue et les afficher dans le sélecteur. Les classes CustomPickerView et CustomPickerLabel contiennent le code suivant, chaque:

- (void)didMoveToSuperview { if ([[self superview] respondsToSelector:@selector(setShowSelection:)]) { [[self superview] performSelector:@selector(setShowSelection:) withObject:NO]; } }

le code ci-dessus fonctionne très bien pour l'affichage et le défilement, mais quand je clique sur l'étiquette pour faire défiler, il ne fait rien. Si je clique juste à l'extérieur de l'étiquette, comme dans les coins du sélecteur, la roue tourne à la sélection comme il se doit.

Toutes les suggestions seraient appréciées.

Rod

Répondre

5

Set propriété de votre CustomView userInteractionEnabled-NO. Il semble que s'il est défini sur YES, l'interception de la vue personnalisée touche et le sélecteur ne peut pas défiler jusqu'à la ligne engagée.

+0

Homme, merci beaucoup! J'ai continué à essayer de définir le paramètre userInteractionEnabled de la balise et de la vue sur YES (intuitivement) et une combinaison des deux, mais je n'ai jamais essayé de le faire (supposé que c'était par défaut). – Rod

Questions connexes