2013-01-07 48 views
2

我有一個主視圖控制器,它有許多子視圖。我想要的是從子視圖文件中以編程方式禁用除一個子視圖及其子視圖之外的所有其他視圖。但我所得到的都是冷凍的意見。我做錯了什麼?Objective-C如何有選擇地禁用用戶交互

我試過這段代碼:

#define kDontDisableUserInteraction 321 


- (id)initWithFrame:(CGRect)frame 
{ 
    NSLog(@"initWithFrame"); 
    self = [super initWithFrame:frame]; 
    if (self) { 
     // Initialization code 
     self.tag = kDontDisableUserInteraction; 
    } 
    return self; 
} 

-(void)something{ 

    MVC *myController = [self getMVC]; 

    for (UIView* subview in myController.view.subviews) { 
     NSLog(@"subview.tag %i", subview.tag); 
     if (subview.tag != kDontDisableUserInteraction){ 
      subview.userInteractionEnabled = NO; 
     } 
    } 


    for (UIView *view in self.subviews){ 
     NSLog(@"enabled!"); 
     view.userInteractionEnabled = YES; 
    } 
} 

- (MVC *)getMVC { 
    Class vcc = [MVC class]; // Called here to avoid calling it iteratively unnecessarily. 
    UIResponder *responder = self; 
    while ((responder = [responder nextResponder])) if ([responder isKindOfClass: vcc]) return (MVC *)responder; 
    return nil; 
} 
+0

根據上面的代碼,這'一個子視圖'是您的實際視圖類 – MCKapur

+0

@Rohan是的,我想禁用父視圖控制器下的所有子視圖,因爲該對象很小,其他按鈕等仍然可見,所以這就是爲什麼當這個小對象出現在主視圖上時我想禁用它們。 – GourmetFan

+0

我看,看着你的代碼,我沒有看到它出錯的地方...... – MCKapur

回答

0

我解決它通過對所有其他應用按鈕的全屏幕查看並獲得我希望在按鈕上進行用戶交互的一個視圖。這樣我就不允許用戶點擊任何功能,除了我希望用戶點擊某些功能的一個視圖。

相關問題