2010-09-24 6 views
1

Salut à tous, quelqu'un peut-il expliquer comment je peux sous-classer UIButton et remplacer une méthode de sorte que lorsque l'utilisateur tire un bouton, il se lève tout de suite? Le problème est que lorsque je fais glisser hors du cadre du bouton, il reste actif et vers le bas. Je veux qu'il s'arrête dès que le doigt quitte le cadre du bouton. Des idées?Cocoa Touch - UIButtons - Subclassing UIButton

(Cocoa Touch)

Répondre

4

Si quelqu'un a jamais ce problème, le code suivant permet de détection de bord extrêmement précis tout en faisant glisser. Si vous faites glisser le bouton, il ne dépassera pas le bord du bouton comme d'habitude.

(je UIButton et fait sous-classé les éléments suivants :)

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    touchBlocker = TRUE; 
    self.highlighted = TRUE; 
    NSLog(@"Touch Began"); 
} 
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { 
    UITouch *touch = [[event allTouches] anyObject]; 
    CGPoint location = [touch locationInView:self]; 
    if (touchBlocker) { 
     if (!CGRectContainsPoint([self bounds], location)) { 
      touchBlocker =FALSE; 
      self.highlighted = FALSE; 
      NSLog(@"Touch Exit"); 
     } 
    } else if (CGRectContainsPoint([self bounds], location)) { 
     touchBlocker = TRUE; 
     self.highlighted = TRUE; 
     NSLog(@"Touch Enter"); 
    } 

} 
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 
    touchBlocker = FALSE; 
    self.highlighted = FALSE; 
    NSLog(@"Touch Ended"); 
}