UIScrollView 类型访问 UIWebView

Posted

技术标签:

【中文标题】UIScrollView 类型访问 UIWebView【英文标题】:UIScrollView type access to UIWebView 【发布时间】:2012-04-26 00:38:37 【问题描述】:

我想知道 UIWebView 的 contentOffset,和/或从中获取 didScroll 类型的通知。我错过了什么,还是那不可能。

我想要的是一个一半是信息面板,一半是 UIWebView 的 UI。当应用程序发现用户想要查看更多 Web 视图时,我想使用更小的信息面板和更大的 Web 视图来重新构建框架。当用户想要少看时,重新构图到一半。

问题是界面几乎没有按钮空间。如果 web 视图是滚动视图,我可以使用滚动动作来辨别意图。 (向下滚动表示放大,向上滚动表示缩小)。有什么想法可以通过网络视图来实现吗?

【问题讨论】:

【参考方案1】:

UIWebView 由 UIScrollView 组成。

要访问 ScrollView,您可以使用以下两种方式之一:

UIWebView *aWebView; // Initialization code 
UIScrollView *aScrollView;
for (UIView *aView in [aWebView subviews]) 
    if ([aView isKindOfClass:[UIScrollView class]]) 
        aScrollView = (UIScrollView *)aView;
    

aScrollView = [[aWebView subviews] objectAtIndex:0];

Option-1 是获取 UIScrollView 实例的一种更安全的方法...

和....

如果您正在为 ios5 构建应用程序,您可以调用..

aScrollView = aWebView.scrollView;

编辑

如果你仔细查看UIWebView,你应该注意到它符合UIScrollViewDelegate

【讨论】:

我怎么会错过 scrollView 属性?对于初学者,我会以这种方式愚弄:myWebView.scrollView.delegate = self;在包含VC。好像我在自找麻烦,但我们会看到的。谢谢!【参考方案2】:

如果您的主要目的是在 UIWebView 之上提供自定义手势类型的操作,您可以尝试 UIGestureRecognizer。

(别忘了提供UIGestureRecognizerDelegate的gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer实现,让webview自带的手势识别器正常工作)

【讨论】:

以上是关于UIScrollView 类型访问 UIWebView的主要内容,如果未能解决你的问题,请参考以下文章

访问 UIScrollView 中动态加载的标签

UIScrollView 每次访问视图都会改变滚动位置

如何访问 UIScrollView 的特定子视图(UIWebView)并将一行 Java 传递给它

UIScrollView 中的可访问性问题

如何访问添加到 UIScrollView 的 UIView 上的控件

iOS UIAutomation:访问在自动化脚本中添加到 UIScrollView 上的自定义子视图