Je désactive et active une vue à l'aide du code suivant ....
[self.view setUserInteractionEnabled:NO];
[self.view setUserInteractionEnabled:YES];
Si j'aime cela, toutes ses sous-vues sont également affectées ... Toutes sont désactivées, comment faire uniquement pour une vue particulière? C'est possible?
C'est exactement la même chose, en supposant que votre autre vue soit membre ou que vous puissiez parcourir le tableau de sous-vues de self.view
, Comme ceci:
MyViewController.h
UIView* otherView;
MyViewController.m
otherView.userInteractionEnabled = NO; // or YES, as you desire.
OU:
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.
}
Dans Swift UIView
ont la propriété userInteractionEnabled
pour la rendre réactive ou non. Pour rendre le code d'utilisation complet ne répond pas:
// 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
for (UIView* view in self.view.subviews) {
if ([view isKindOfClass:[/*"which ever class u want eg UITextField "*/ class]])
[view setUserInteractionEnabled:NO];
}
j'espère que cela aide. codage heureux :)
La meilleure option est d'utiliser la propriété Tag
de la vue plutôt que d'itérer toutes ses sous-vues. Définissez simplement la balise sur la sous-vue que vous souhaitez désactiver l'interaction et utilisez le code ci-dessous pour y accéder et désactiver l'interaction.
// 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];