我有以下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?
谢谢。
答案 0 :(得分:0)
要解决此问题,您需要在添加或删除元素时使用UIAccessibilityPostNoficiation
函数。 UIAccessibilityLayoutChangedNotification
通知可能会有效。如果做不到这一点,请尝试UIAccessibilityScreenChangedNotification
。