2012-08-31 20 views
25

estoy Desactivación y activación de una vista usando el siguiente código ....usuario Desactivar interactuar en una vista IOS

[self.view setUserInteractionEnabled:NO]; 
[self.view setUserInteractionEnabled:YES]; 

Si lo hago así, todo lo que también quedó afectada subvistas ... Todos son personas con discapacidad , ¿cómo hago solo para una vista particular? ¿Es posible?

Respuesta

31

es exactamente la misma, asumiendo que su otro punto de vista es ya sea un miembro o puede recorrer la matriz de subvistas self.view 's, así:

MyViewController.h

UIView* otherView; 

MyViewController.m

otherView.userInteractionEnabled = NO; // or YES, as you desire. 

O:

for (int i = 0; i < [[self.view subviews] count]; i++) 
{ 
    UIView* view = [[self.view subviews] objectAtIndex: i]; 

    // now either check the tag property of view or however else you know 
    // it's the one you want, and then change the userInteractionEnabled property. 
} 
5
for (UIView* view in self.view.subviews) { 

    if ([view isKindOfClass:[/*"which ever class u want eg UITextField "*/ class]]) 

     [view setUserInteractionEnabled:NO]; 

} 

Espero que ayude. feliz de codificación :)

1

La mejor opción es utilizar Tag propiedades de la vista en lugar de la iteración de todos sus subvistas. Simplemente configure la etiqueta en el subView que desea deshabilitar la interacción y utilice el código siguiente para acceder a él y deshabilitar la interacción.

// considering 5000 is tag value set for subView 
// for which we want to disable user interaction 
UIView *subView = [self.view viewWithTag:5000]; 
[subView setUserInteractionEnabled:NO]; 
+0

Gracias, esto funcionó para mí, sin embargo, tengo varias vistas, así que necesitaba ocultarlas todas. Otra cosa que hice fue hacer una vista con un fondo para que se atenuara la vista que estaba desactivando. – Gram

8

en Swift UIView tienen la propiedad userInteractionEnabled para que sea receptivo o no. Para que la vista completa no responda use el código:

// make screen unresponsive 
self.view.userInteractionEnabled = false 
//make navigation bar unresponsive 
self.navigationController!.view.userInteractionEnabled = false 

// make screen responsive 
self.view.userInteractionEnabled = true 
//make navigation bar responsive 
self.navigationController!.view.userInteractionEnabled = true 
Cuestiones relacionadas