记录子视图不返回正确的子类

时间:2015-04-29 19:16:31

标签: ios objective-c uiview

在我的应用程序的某些点上,我在keyWindow中添加了UIView,在其他点我需要检索它以便操作它。

我添加了这样的视图:

self.minimizedView = [[UIViewCustomSubclass alloc] initWithFrame:viewFrame];
[[UIApplication sharedApplication].keyWindow addSubview:self.minimizedView];

后来,在另一个类中,我试图遍历keyWindow的子视图,如下所示:

for (id subview in [UIApplication sharedApplication].keyWindow.subviews) {
    NSLog(@"VIEW: %@ CLASS %@", [subview description], [subview class]);
}

我在这里使用 id 因为我想在访问正确的子视图时是类型安全的,因为我需要移动它的帧,我想确保我只移动正确的子视图。 ..进一步到那时,我已经将UIView子类化了,并创建了我要添加到keyWindow的视图...

在上面的for循环中,我试图要求isMemberOfClass:

if ([subview isMemberOfClass:[UIViewCustomSubclass class]]) {
    NSLog(@"The Subview %@ of Class %@ Should Be The One We Are Looking For", [subview description], [subview class]);
    // assign subview to iVar etc
}

但这永远不会执行 - 子视图总是将它的类类型记录为UIView(超类),但从不记录子类...我设置了一个断点并在该点检查了View属性我把它添加到keyWindow,它似乎是正确的子类类型......

有人能发现我做错的事吗?

- 编辑 -

OOPS。我刚刚在我的代码中找到了一个边缘情况/位置,我将视图仍然分配为UIView而不是子类 - 这解决了问题。

0 个答案:

没有答案