1

UI 要素の次の階層があります。

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

これで、ページが最初に読み込まれると、これだけが表示されます。ただし、ユーザーが右にスクロールすると、追加の UIWebView が表示されたときに読み込まれます。たとえば、ユーザーが右に複数回スクロールすると、4 番目の 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}}]

しかし、右にスクロールして追加の UIWebView が 3 つの既存の UIWebView に追加されると、実行時に新しい UIWebView 要素が表示されませんlogElementTree()。x 座標が更新されていることに気付きました。たとえば、UIScrollView の 4 番目の項目までスクロールした後、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}}]

参考までに、新しく作成された UIWebView は、 を呼び出すことによって UIScrollView に追加され[scrollView addSubView:<new_UIWebView_object>]ます。実行時に新しく作成された UIWebViews が表示されるようにするには、どうすればよいlogElementTree()ですか?

ありがとうございました。

4

1 に答える 1

0

この問題を回避するUIAccessibilityPostNoficiationには、要素が追加または削除されたときに関数を使用する必要があります。UIAccessibilityLayoutChangedNotification通知はおそらく機能します。それができない場合は、 を試してくださいUIAccessibilityScreenChangedNotification

于 2011-06-25T22:09:50.390 に答える