Iphone Objective-C如何有选择地禁用用户交互
我有一个主视图控制器,它有许多子视图。我想要的是从子视图文件中以编程方式禁用除一个子视图及其子视图之外的所有其他视图。但我得到的只是冻结的视图。我做错了什么 我尝试了以下代码:Iphone Objective-C如何有选择地禁用用户交互,iphone,objective-c,ios,Iphone,Objective C,Ios,我有一个主视图控制器,它有许多子视图。我想要的是从子视图文件中以编程方式禁用除一个子视图及其子视图之外的所有其他视图。但我得到的只是冻结的视图。我做错了什么 我尝试了以下代码: #define kDontDisableUserInteraction 321 - (id)initWithFrame:(CGRect)frame { NSLog(@"initWithFrame"); self = [super initWithFrame:frame]; if (self)
#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;
}
以下链接可能会有所帮助:
我通过在所有其他视图上应用一个按钮的全屏来解决这个问题,并获得一个我希望在按钮上进行用户交互的视图。通过这种方式,我不允许用户单击任何函数,但我希望用户单击某些函数的一个视图除外。根据上面的代码,“一个子视图”是您的实际视图class@Rohan是的,我想禁用父视图控制器下的所有子视图,因为此对象很小,其他按钮等仍然可见,这就是为什么当这个小对象出现在主视图上时,我想禁用它们。我明白了,看看你的代码,我看不出哪里出错了…你能放一个NSLog()吗;在subview.tag中!=kDontDisableUserInteraction条件,并查看它是否called@Rohan确实如此,但包括此子视图上的对象在内的所有对象都已冻结。我不明白为什么会这样。我几乎已经测试了这些链接中提供的所有代码,但我得到的不是所有冻结的视图,就是所有对象都可以单击。