2010-08-13 25 views
33

En iOS, ¿hay alguna manera de evitar que un UIView que contiene varios botones (hermanos) se toque al mismo tiempo? Por ejemplo, dos botones que no se superponen y que están uno al lado del otro se pueden tocar al mismo tiempo con dos toques.Evitar que se toquen varios botones al mismo tiempo

Respuesta

90

Establecer UIView.exclusiveTouch.

+0

Awesome! ¿Por qué no pensé en eso para botones que no sé? – pryomoax

+4

¡Perfecto! eso era como un tesoro escondido, nunca se supo de esta propiedad, muchas gracias. – RVN

+8

¡tenga en cuenta que debe configurarlo en cada "UIButton"! NO el UIView esos botones están en :) (Establecer en todas las subvistas de ese UIView haría) como este -> [self.controlView.subviews makeObjectsPerformSelector: @selector (setExclusiveTouch :) withObject: [NSNumber numberWithBool: YES] ]; – Hlung

11

También puede utilizar el siguiente método. Si tiene dos botones o más, para evitar el empuje múltiple a la vez.

para, por ejemplo,

[Button1 setExclusiveTouch:YES]; 

[Button2 setExclusiveTouch:YES]; 

Conjunto este método en su viewDidLoad o viewWillAppear

2
for(UIView* v in self.view.subviews) 
    { 
    if([v isKindOfClass:[UIButton class]]) 
    { 
     UIButton* btn = (UIButton*)v; 
     [yourButton setExclusiveTouch:YES]; 
    } 
} 
0

Es necesario encontrar todos los botones en ese punto de vista y establecer el "exclusiveTouch" propiedad de verdadera para evitar el toque múltiple al mismo tiempo.

func exclusiveTouchForButtons(view: UIView) { 
    for cmp in view.subviews { 
     if let cmpButton = cmp as? UIButton { 
      cmpButton.exclusiveTouch = true 
     } else { 
      exclusiveTouchForButtons(cmp) 
     } 
    } 
} 
Cuestiones relacionadas