iPhone UIAutomation:执行logElementTree()时不显示动态添加的UI元素

时间:2011-06-17 06:11:29

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

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

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

现在,当我最初加载页面时,这就是所有显示的内容。但是,如果用户向右滚动,则会在用户遇到它们时加载其他UIWebView。例如,如果用户多次向右滚动,则第四个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}}]

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

谢谢。

1 个答案:

答案 0 :(得分:0)

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