2010-08-08 6 views
0

Je crée un clavier personnalisé avec disons 10 UIB configurés sur une rangée horizontale. Les boutons couvrent la largeur de l'écran, sont de la même taille et doivent être alignés l'un contre l'autre.Clavier personnalisé iPhone

Je voudrais également permettre à l'utilisateur de choisir un bouton en faisant glisser un doigt le long de la rangée de boutons. Un aperçu du bouton choisi est affiché ailleurs sur l'écran. L'aperçu est mis à jour lorsque l'utilisateur déplace son doigt le long de la ligne. Lorsque l'utilisateur est satisfait de son choix, il libère son doigt, confirmant la sélection. La chose évidente à essayer est UICountrolEventDragExit ou UIControlEventDragOutside pour supprimer l'action du bouton précédent et UIControlEventTouchUpInside pour activer le bouton actuel et tuer les événements tactiles précédents. Cependant, UICountrolEventDragExit et UIControlEventDragOutside ne sont activés que lorsque l'utilisateur s'est suffisamment éloigné du bouton donné. Puisque mes boutons doivent s'emboîter les uns contre les autres, c'est trop loin et pas assez bon pour moi.

Suggestions?

Répondre

2

interaction utilisateur Désactiver les vues utilisées pour afficher les boutons, et de suivre toutes les touches dans la vue contenant. Ceci est similaire à la façon dont le code du clavier d'Apple fonctionne.

(Vous pouvez dessiner tous les boutons directement dans le drawRect: d'une seule vue du clavier, mais cela ne regardera pas correct lors des changements d'orientation)

+0

Merci. Je dois me salir les mains? Peut être. – SK9

0

Si vous voulez un «clavier» de 10 boutons, je voudrais utiliser un UISegmentedControl. Vous pouvez en créer un avec 10 segments chacun avec sa propre clé et recevoir la clé sélectionnée comme programatically:

segmentSelected = mySegmentControll.selectedSegmentIndex; 
+0

Merci pour la réponse. C'est une question un peu hypothétique: Le clavier doit être une rangée de UIButtons. Supposons ceci. – SK9

0

Appel

-(void)touchesBegan:(NSSet )touches withEvent:(UIEvent)event;

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

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;

judicieusement avec une vue montrant 10 UIImages (pas UIButtons) fonctionne également bien.