2

我有一个包含许多子视图的主视图控制器。我想要的是从子视图文件中以编程方式禁用除一个子视图及其子视图之外的所有其他视图。但我得到的只是所有冻结的视图。我做错什么了?

我试过这段代码:

#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;
}
4

2 回答 2

2

以下链接可能会有所帮助:

如何禁用对除最顶层视图之外的所有视图的触摸输入?

UIView - “用户交互启用”父级为假但子级为真?

于 2013-01-07T13:32:16.847 回答
0

我通过在所有其他视图上应用全屏按钮并获得我希望在按钮上进行用户交互的一个视图来解决它。这样,我不允许用户单击除我希望用户单击某些功能的一个视图之外的任何功能。

于 2013-01-10T09:15:47.020 回答