2009-09-03 10 views
1

J'ai 4-5 uibuttons (peut également utiliser uiview au lieu du bouton) côte à côte l'un à côté de l'autre. Lorsque l'utilisateur passe d'un bouton à l'autre (en dehors de l'auto-affichage), je souhaite annuler cette touche et commencer à appuyer sur le bouton suivant (vue).Force annuler une touche iphone

Comment réaliser cette fonctionnalité?

J'ai utilisé uiview au lieu de boutons gardé l'un à côté de l'autre, géré ses événements touches.

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

UITouch *touch = [touches anyObject]; //anyobject 
CGPoint touchLocation = [touch locationInView:touch.view]; 
if(![self pointInside:touchLocation withEvent:nil]) 
{ 
//touch is outside of my current view , do something to cancel current touch and i can get touchesmoved for the next view . help me to write something. 
} 

}

est-il une autre façon de gérer l'événement quand nous avons une telle interface utilisateur.

Merci.

+0

d'addition ci-dessus, On peut penser à l'application de piano. Comment ils obtiennent des événements tactiles lorsque l'utilisateur glisse le doigt d'une clé à l'autre clé? Comment réaliser ce comportement. Merci de me fournir un lien ou une base de code. – Niraj

Répondre

1

Si vous utilisez UIButtons, vous pouvez simplement utiliser les événements du bouton pour cela. Lorsque vous obtenez un TouchDown ou un TouchDragInside, jouez votre note. Arrêtez-vous lorsque vous obtenez un touchUpInside ou un touchDragOutside.

+0

Merci pour votre aide. J'ai essayé avec les événements de UIButton. le toucher des roues fonctionnera parfaitement bien. mais l'emplacement des événements (dragoutside et draginside) est très éloigné du bouton. – Niraj

+0

Avez-vous un code de travail qui peut m'aider à résoudre ce problème? – Niraj

+0

La façon dont les événements de glisser pour UIButtons fonctionne est qu'il cherche à voir où le glissement a commencé et où il s'est terminé. Si elle a commencé en dehors d'un bouton et est entrée dans la zone du bouton, elle appelle votre méthode (IBAction). Si elle a commencé à l'intérieur du bouton et s'est terminée à l'extérieur, elle appelle votre méthode touchDragOutside. – mahboudz

0

Vous devez gérer vous-même les touches d'une sous-classe UIWindows ou du récipient UIViewController (dans ce cas, rappelez-vous de désactiver la propriété userInteractionEnabled)

Questions connexes