2012-08-31 13 views
25

Ich Sperren und Freigeben eine Ansicht, die den folgenden Code verwendet ....deaktivieren Benutzer interagieren in einer Ansicht IOS

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

Wenn ich so tun, alle es Subviews wurde ebenfalls betroffen ... Alle sind deaktiviert , wie mache ich nur für bestimmte Sicht? Ist es möglich?

Antwort

31

Es ist genau das gleiche, ist der andere Ansicht der Annahme entweder Mitglied oder Sie können wie so durch self.view ‚s Reihe von Subviews, iterieren:

MyViewController.h

UIView* otherView; 

MyViewController.m

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

OR:

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]; 

} 

hoffe es hilft. glücklich Codierung :)

1

Die beste Option ist Tag Eigenschaft der Ansicht zu verwenden, anstatt Iterieren all seinen Subviews. Setzen Sie das Tag einfach auf die SubView, die Sie deaktivieren möchten, und verwenden Sie den folgenden Code, um darauf zuzugreifen und die Interaktion zu deaktivieren.

// 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

Danke, das hat für mich funktioniert, aber ich habe mehrere Ansichten, also musste ich sie alle verstecken. Eine andere Sache, die ich gemacht habe, war eine Ansicht mit einem Hintergrund zu machen, so dass die Ansicht, die ich deaktivierte, ausgegraut war. – Gram

8

In schnellen UIView tun haben Eigenschaft userInteractionEnabled es anspricht oder nicht zu machen. Um volle Ansicht zu machen reagiert nicht mehr auf den Code:

// 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 
Verwandte Themen