1

我有以下 UI 元素层次结构:

UITableView
- UITableViewCell
-- UIScrollView
--- UIWebView
--- UIWebView
--- UIWebView

现在,当我最初加载页面时,这就是显示的全部内容。但是,如果用户向右滚动,额外的 UIWebViews 将在用户遇到它们时加载。例如,如果用户要向右滚动多次,因为第四个 UIWebView 将被插入到 UIScrollView 中。

现在,当我最初加载包含所有这些元素的屏幕时,如果我在页面上执行 logElementTree(),我列出的所有元素都将显示出来。例如,我可能会看到以下输出:

4) UIATableView [name:Empty list value:rows 1 to 1 of 1 rect:{{x:0, y:64}, {width:320, height:416}}]
5) UIATableCell [name:OfferCardTableViewCell value:(null) rect:{{x:0, y:160}, {width:320, height:416}}]
6) UIAWebView [name:(null) value:(null) rect:{{x:0, y:160}, {width:320, height:418}}]
6) UIAWebView [name:(null) value:(null) rect:{{x:320, y:160}, {width:320, height:418}}]
6) UIAWebView [name:(null) value:(null) rect:{{x:640, y:160}, {width:320, height:418}}]

但是,如果我向右滚动并将其他 UIWebViews 添加到三个现有 UIWebViews 中,则新的 UIWebView 元素在执行时不会显示logElementTree()。我确实注意到 x 坐标已更新。例如,滚动到 UIScrollView 中的第四项后,UIAWebViews 将显示为以下坐标:

6) UIAWebView [name:(null) value:(null) rect:{{x:-960, y:160}, {width:320, height:418}}]
6) UIAWebView [name:(null) value:(null) rect:{{x:-640, y:160}, {width:320, height:418}}]
6) UIAWebView [name:(null) value:(null) rect:{{x:-320, y:160}, {width:320, height:418}}]

作为参考,新创建的 UIWebViews 通过调用添加到 UIScrollView 中[scrollView addSubView:<new_UIWebView_object>]。我需要做什么才能在执行时显示新创建的 UIWebViews logElementTree()

谢谢你。

4

1 回答 1

0

要解决此问题,您需要在UIAccessibilityPostNoficiation添加或删除元素时使用该函数。该UIAccessibilityLayoutChangedNotification通知可能会起作用。做不到这一点,试试UIAccessibilityScreenChangedNotification

于 2011-06-25T22:09:50.390 回答