2010-09-04 90 views
2

我有一个viewController,用UIWebView弹出一个模态视图。如果我访问一个特别重的页面,我开始获取内存警告,随后父视图被卸载。这一切都很好,但是当我关闭模态视图时,父母重新加载(按预期),但不能再处理任何触摸事件。该应用程序正确响应方向更改,但没有任何触摸会改变任何内容。按钮不起作用,UIWebView不响应滚动(但加载默认网站)等。就好像有一个透明的UIView覆盖我的整个窗口。任何想法,为什么这可能发生?为什么我的UIView在重新加载后没有响应?

下面是如何显示模式窗口:

BrowsingViewController* controller = [[BrowsingViewController alloc] 
    initWithNibName:UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad ?  
    @"BrowsingViewController-iPad" : @"BrowsingViewController" 
     bundle:nil initialURL:[[request URL] absoluteString]];  
[self presentModalViewController:controller animated:YES];  
[controller release]; 

以下是我关闭它(从模式的看法本身):

- (void) onCloseTouch 
{ 
    [self.parentViewController dismissModalViewControllerAnimated:YES]; 
} 

编辑:

通过走出去视图层次结构,我没有注意到任何规范。这是我的主视图控制器的日志语句。他们我的两个模式的看法之前和之后我显示是相同的:

viewWillAppear called. 
=============== parentViewController subviews count=2 
View [0] is a UINavigationTransitionView 
subview count=0 
View [1] is a UINavigationBar 
subview count=2 
     subview [0] is a UINavigationItemView 
     subview [1] is a UINavigationButton 
=============== self views subviews count=3 
View [0] is a UIWebView with tag [1] 
subview count=1 
     subview [0] is a UIScrollView with tag [0] 
View [1] is a UIToolbar with tag [2] 
subview count=3 
     subview [0] is a UIToolbarTextButton with tag [0] 
     subview [1] is a UIToolbarButton with tag [0] 
     subview [2] is a UIToolbarButton with tag [0] 
View [2] is a UIView with tag [3] 
subview count=2 
     subview [0] is a UIActivityIndicatorView with tag [31] 
     subview [1] is a UILabel with tag [32] 

编辑#2: 这个问题似乎并没有出现在iPhone,iPad上只。我已经检查了我正在执行if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)的所有地方,并且这种逻辑似乎没有任何结果。

+0

你是如何解散模态视图控制器?你怎么显示模态视图控制器?在这里显示一些代码可能会有帮助。 – 2010-09-04 00:35:03

回答

1

我不会以这种方式解雇;我会用代理模式代替:当BrowsingViewController想要关闭时,它会调用类似[delegate browsingViewControllerDidFinish:self];的东西。这是关闭视图控制器的“常用”方式,它也消除了总是由其父视图控制器以模态方式呈现的要求。

BrowsingViewControllerBrowsingViewController-iPad xibs之间有什么区别?

我会在“父”视图控制器中进行一些检查,逐步检查其view以及所有子视图,以查看是否有任何重叠(正如您所说)覆盖阻止触摸事件的整个视图层次结构。

+0

xib之间的差异可以忽略不计。事实上,我使用iPad上的iPhone特定版本对其进行了测试,并且仍然能够重现此问题。该问题已在检查视图层次结构时进行了更新。 – 2010-09-04 02:41:36

+0

发现问题。它追溯到我如何解散模态观点。我的viewDidAppear方法检查模态视图,如果它存在,让它显示另一个“叠加”模态。问题是,在前一个被解雇之后,这个问题才得到解决。为什么这不是在iPhone上体现出来的,这让我感到惋惜,但对于糟糕的编程而言,我感到羞耻! – 2010-09-04 04:00:59

相关问题