J'ai récemment asked a question concernant la détection des collisions dans les sous-vues, avec une réponse parfaite. Je suis arrivé au dernier point dans la mise en œuvre de la collision sur ma demande, mais j'ai rencontré un nouveau problème.Avancer moyen d'utiliser UIView méthode convertRect pour détecter CGRectIntersectsRect plusieurs fois
L'utilisation de convertRect a été très utile pour obtenir le CGRect de la sous-vue. J'avais besoin d'être un peu plus complexe car ce n'était pas exactement des rectangles qui devaient être détectés.
sur XCode J'ai créé une classe abstraite appelée TileViewController. Entre autres propriétés, il possède un IBOutlet UIView * detectionView; J'ai maintenant plusieurs classes qui héritent de TileViewController, et chaque classe il y a plusieurs vues imbriquées dans le detectionView que j'ai créé en utilisant Interface Builder. L'idée est un objet pourrait être une certaine forme ou taille, j'ai placé par programme ces points de détection «carrelés» au centre de chaque objet. Un utilisateur peut sélectionner un élément et interactif avec lui, dans ce cas le déplacer.
Maintenant, la méthode elle-même fonctionne dans une certaine mesure, mais je ne pense pas qu'elle fonctionne correctement avec les valeurs imbriquées car la détection est désactivée.
Une version simplifiée de cette méthode fonctionne - En utilisant CGRectIntersectsRect sur la détection elle-même, je me demande si je suis en boucle et vérifie les vues correctement? Je ne savais pas si elle comparait dans la même vue mais je suppose que c'est, j'ai modifié le code légèrement à un moment donné, plutôt que de comparer les valeurs dans self.view j'ai pris les UIViews de viewController.detectView dans le interactiveView.detectView mais le résultat était le même.
Il est donc truqué les sous-vues changent de couleur, mais ils changent de couleur quand ils ne sont même pas toucher, et quand ils le font toucher les mauvaises UIViews changent de couleur