代码之家  ›  专栏  ›  技术社区  ›  Wayne Hartman

为什么我的UIView在重新加载后没有响应?

  •  2
  • Wayne Hartman  · 技术社区  · 15 年前

    我有一个viewController,可以弹出一个带有UIWebView的模式视图。如果我访问一个特别重的页面,我会收到内存警告,然后父视图会被卸载。这一切都很好,但当我关闭模态视图时,我的父级会重新加载(如预期的那样),但不再能够处理任何触摸事件。应用程序对方向的改变做出正确的反应,但再多的触摸也不会改变任何东西。按钮不起作用,UIWebView不响应滚动(但加载默认网站),等等。就好像有一个透明的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]
    

    这个问题似乎并没有出现在iPhone上,只有iPad。我已经检查了所有我表演的地方 if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 这些逻辑似乎都没有任何意义。

    1 回复  |  直到 15 年前
        1
  •  1
  •   Shaggy Frog    15 年前

    我不会以这种方式拒绝;而是使用委托模式:when BrowsingViewController 如果你想关门的话 [delegate browsingViewControllerDidFinish:self]; 浏览视图控制器 始终由其父视图控制器以模态方式呈现。

    两者有什么区别 浏览视图控制器 BrowsingViewController-iPad 锡伯族?

    我会在“父”视图控制器中进行一些检查,逐步检查其 view