我有一個主視圖控制器,它有許多子視圖。我想要的是從子視圖文件中以編程方式禁用除一個子視圖及其子視圖之外的所有其他視圖。但我所得到的都是冷凍的意見。我做錯了什麼?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;
}
根據上面的代碼,這'一個子視圖'是您的實際視圖類 – MCKapur
@Rohan是的,我想禁用父視圖控制器下的所有子視圖,因爲該對象很小,其他按鈕等仍然可見,所以這就是爲什麼當這個小對象出現在主視圖上時我想禁用它們。 – GourmetFan
我看,看着你的代碼,我沒有看到它出錯的地方...... – MCKapur