iOS - UIViews ne répond pas aux événements tactiles


0

J'essaie de répondre aux événements tactiles sur certains UIViews. Voici comment le contrôleur de vue recherche dans IB:

enter image description here

est ici la hiérarchie de vue:

enter image description here

J'ai mis en œuvre les quatre "touche" méthodes comme suit:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ 
    UITouch *touch = [touches anyObject]; 
    if(touch.view==locPhoneView){ 
     locPhoneView.backgroundColor=[ColorUtility colorWithHexString:@"83d3f0"]; 
    } 
    if(touch.view==locAddressView){ 
     locAddressView.backgroundColor=[ColorUtility colorWithHexString:@"83d3f0"]; 
    } 
} 

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{ 
    UITouch *touch = [touches anyObject]; 
    if(touch.view==locPhoneView){ 
     locPhoneView.backgroundColor=[UIColor whiteColor]; 
    } 
    if(touch.view==locAddressView){ 
     locAddressView.backgroundColor=[UIColor whiteColor]; 
    } 

} 
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event{ 

} 
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{ 

} 

Peu importe où je touche sur l'écran, les événements ne sont pas envoyés. J'ai un point d'arrêt au début de "touchesBegan", et ce code n'est jamais atteint.

Toutes les vues ont « l'interaction de l'utilisateur est activée » cochée, et sont accrochés de manière appropriée à leurs points de vente.

Qu'est-ce qui me manque? Ailleurs dans mon projet, je fais la même chose et ça marche bien.

Pourrait-il être lié au fait que mon point de vue racine est un UIScrollView?

Merci!

EDIT: J'ai suivi les conseils ci-dessous, et sous-classé UIScrollView afin que les touches soient envoyées à NextResponder. Il semble que je reçois les touches maintenant, cependant, si la couleur de fond de la vue change réellement ne se comporte pas correctement.

Par exemple, si je fais une pression rapide sur une vue, les méthodes « touche » de feu, mais la couleur de fond ne change pas. Cependant, si j'appuie sur et maintenez pendant environ une seconde, la couleur de fond change comme je l'espère. Une idée de ce qui pourrait causer ce comportement étrange?

EDIT: Ajout de la ligne:

[scrollView setDelaysContentTouches:NO]; 

à ma méthode de viewDidLoad a résolu ce problème pour moi. Merci de votre aide!

1

Vous avez raison, votre problème est que votre point de vue sont placés dans un UIScrollView. La vue déroulante obtient tous les événements tactiles et ne les transmet pas à ses sous-vues.

Vous pouvez obtenir des solutions à ce problème: