2011-05-15 77 views
4

我的应用程序有两个主要视图:NSScrollView和WebView中的NSTextView子类。 WebView显示的内容取决于用户在文本视图中输入的内容 - 所以我希望当用户滚动文本视图或Web视图时按比例滚动其他滚动。如何同步NSScrollView和WebView的滚动?

我发现this article其中提到了如何使用2个滚动视图。我的问题是WebKit似乎没有在任何地方使用正常的滚动视图。

我该如何实施?我错过了什么?

回答

6

这不是一个可以完美解决的微不足道的问题,因为很难知道文本视图中正在编辑的文本的数量是否与Web视图中的滚动类似。

但是,要回答您关于WebView中滚动视图的问题,可以使用它们,但据我所知,没有广泛记录。您必须利用这一事实,即您可以使用公共API获取正在使用的滚动视图,方法是向相应的WebView子视图请求其“enclosingScrollView”。这样的事情对我的作品在WebView中,我知道,只有一个框架:

[[[[myWebView mainFrame] frameView] documentView] enclosingScrollView]; 
+0

我有一个非常类似的问题,除了我想使用两个WebViews。你介意分享一些你用来设置的代码,我有问题。 – 2011-12-14 17:46:02

+1

如果不知道更多关于您的问题,很难知道要分享哪些代码。我建议尝试抓住你的设置的一些细节,这是你混淆,并写一个单独的堆栈溢出问题,以尝试记录问题和解决方案。 – danielpunkass 2011-12-28 14:24:10

0

如果他们按比例滚动,可能是最简单的解决办法是覆盖在你的UIScrollview触摸事件,并在impliment stringByEvaluatingJavaScriptFromString: (js)window.scroll(x,y)。但是,从webView滚动到textview需要更多的工作。 web视图吃触摸事件,所以你需要

  1. 创建一个顶级UIViewUIScroll鉴于其捕获接触,并将它们发送到两个scrollViewwebView(通过JavaScript)的所有触摸事件,或

  2. 使用手势识别器来做同样的事情。

+0

感谢您的答案,但这是一个Mac相关的问题。 – 2011-09-16 11:52:44