93 votes

Base Drag and Drop dans iOS

J’ai envie d’avoir une vue dans laquelle il y a des véhicules circulaient que l’utilisateur peut aussi faire glisser et déposer. Que pensez-vous est la meilleure stratégie à grande échelle pour y parvenir ? Il est préférable d’obtenir les événements tactiles dans les vues qui représente les véhicules, ou de l’agrandir ? Y a-t-il un paradigme simple, vous avez utilisé pour faire glisser et déposez que vous êtes satisfait ? Quels sont les inconvénients des différentes stratégies ?

126voto

ohho Points 17243

Supposons que vous ayez un scène avec une image d’arrière-plan et de nombreux , vous pouvez définir chaque nouveau véhicule comme un `` (UIImageView fonctionnera probablement trop) :

Puis vous pouvez déplacer le véhicule où vous le souhaitez, en répondant à la `` événement, par exemple :

Il est beaucoup plus facile pour les véhicules individuels à gérer ses propres opérations glisser, comparant pour gérer la scène dans son ensemble.

34voto

GrizzlyNetch Points 1314

En plus de la réponse d’ohho j’ai essayé une implémentation similaire, mais sans problème de drag « rapide » et de centrage pour faire glisser.

L’initialisation de bouton est...

et l’implémentation de la méthode :

Je ne dis pas, que c’est la solution parfaite pour la réponse. Néanmoins j’ai trouvé ce la solution la plus simple permettant de faire glisser.

2voto

jeyben Points 141

J'ai eu un cas où je voudrais glisser/déposer uiviews entre plusieurs autres uiviews. Dans ce cas, j'ai trouvé la meilleure solution pour tracer le pan événements dans une super vue contenant toutes les zones de dépôt et de toutes les glisser pignon objets. La principale raison pour ne PAS ajouter des écouteurs d'événement à la réelle traîné les vues que j'ai perdu la poursuite de la pan des événements dès que j'ai changé superview pour les traîné vue.

Au lieu de cela j'ai mis en place un plutôt générique de glisser / déposer solution qui pourrait être utilisé sur un seul ou plusieurs zones de dépôt.

J'ai créé un exemple simple qui peut être vu ici: Glissez-déposez uiviews entre plusieurs autres uiviews

Si vous décidez d'aller dans l'autre sens, essayez d'utiliser uicontrol au lieu de uibutton. Ils déclarent addTarget méthodes et sont beaucoup plus facile à étendre, par conséquent give état et le comportement.

1voto

Magnus Points 1467

Je fait de la piste de glisser sur la vue du véhicule lui-même, plutôt qu'à la grande vue - à moins qu'il existe une raison particulière pas de.

Dans un cas où j'permettre à l'utilisateur de placer des éléments en les faisant glisser sur l'écran. Dans ce cas, j'ai testé les deux, d'avoir la vue d'en haut et l' enfant vues déplaçable. J'ai trouvé c'est plus propre code si vous ajoutez un peu de "draggable" vues à la UIView poignée et comment ils pourraient être déplacés. J'ai utilisé un simple rappel à la mère UIView pour vérifier si le nouvel emplacement a été adapté ou pas si je pourrais indiquer avec des animations.

Avoir la vue de dessus de la piste de glisser je suppose que c'est aussi bon, mais qui le rend légèrement plus salissant si vous souhaitez ajouter des non-déplaçable vues d'interagir avec l'utilisateur, tel qu'un bouton.

0voto

LenArt Points 126

Ou aller les écrous à l’aide du cadre de cocos2d (pour iPhone) et l’utilisation le directeur, sprites (CCSprite) et les méthodes qui vous aident déplacent, localiser, positionner, touchent, accélérer, chargement, mettre en cache, faites glisser, tomber, tournent, etc..

Voir : http://www.cocos2d-iphone.org - bonne documentation trop et quelques très beaux exemples à tirer des enseignements. L’essentiel du travail a déjà été fait pour vous.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X