【问题标题】:iPhone UIAutomation: Dynamically Added UI Elements Not Displayed When Executing logElementTree()iPhone UIAutomation:执行 logElementTree() 时动态添加的 UI 元素不显示
【发布时间】:2011-06-17 06:11:29
【问题描述】:

我有以下 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 中,则在执行 logElementTree() 时不会显示新的 UIWebView 元素。我确实注意到 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 通过调用 [scrollView addSubView:<new_UIWebView_object>] 添加到 UIScrollView。当我执行logElementTree() 时,我需要做什么才能显示新创建的 UIWebViews?

谢谢。

【问题讨论】:

    标签: iphone objective-c ios accessibility ios-ui-automation


    【解决方案1】:

    要解决此问题,您需要在添加或删除元素时使用UIAccessibilityPostNoficiation 函数。 UIAccessibilityLayoutChangedNotification 通知可能会起作用。如果失败,请尝试UIAccessibilityScreenChangedNotification

    【讨论】:

      猜你喜欢
      • 2013-01-05
      • 1970-01-01
      • 1970-01-01
      • 2018-05-21
      • 2011-03-25
      • 1970-01-01
      • 2016-07-29
      • 2014-09-03
      • 2013-08-04
      相关资源
      最近更新 更多