我必须在文章UITableView下面显示一篇网络文章.
我找到的唯一选项是UIWebView在tableView标题中显示文章.
为了做到这一点,我必须获得webView内容的高度,我必须禁用webView的滚动.
我发现了两种禁用滚动的解决方案:
for (id subview in webView.subviews)
if ([[subview class] isSubclassOfClass: [UIScrollView class]])
((UIScrollView *)subview).scrollEnabled=NO;
Run Code Online (Sandbox Code Playgroud)
或者在JavaScript中:
<script type="text/javascript">
touchMove = function(event) {
event.preventDefault();
}
Run Code Online (Sandbox Code Playgroud)
我听说Apple禁止第一个解决方案,但我没有任何证据.使用此解决方案会拒绝我的申请吗?如果是这样,我可以使用第二种解决方案而不被拒绝吗?
有没有人知道在iOS上滚动视图内避免Web视图的技术原因(假设您愿意在Web视图中禁用滚动视图)?
如果您查看UIWebView的Apple文档,他们会说:
重要提示:您不应在UIScrollView对象中嵌入UIWebView或UITableView对象.如果这样做,可能会导致意外行为,因为两个对象的触摸事件可能混淆和错误处理.
看起来他们可能会警告你不要在另一个滚动视图中放置滚动视图,因为内部和外部滚动视图之间的触摸可能会混淆.
但是,有一个非常有效的理由想要UIWebView在滚动视图中放置一个.Web视图不仅仅是滚动视图.UIWebView可以轻松显示各种网页内容.
如果没有必要让滚动内的UIWebView本身,您关闭与任一滚动:
webView.userInteractionEnabled = NO;
Run Code Online (Sandbox Code Playgroud)
要么
webView.scrollView.scrollEnabled = NO;
Run Code Online (Sandbox Code Playgroud)
那么这个设计真的有问题吗?
我想知道这是否部分是原始UIWebView界面的工件,它没有给你直接(和记录)访问其嵌入式UIScrollView(以便能够轻松地禁用其滚动).也许Apple文档中的这句话是遗产吗?
我问,因为我正在维护一个应用程序(由其他人编写),它在滚动视图中使用少量Web视图,允许在它们之间水平滚动.Web内容必须被视为已修复(不可更改),并且每个HTML页面仅显示一页内容.用户需要能够在页面之间滚动,因此为此选择了多个UIWebViews内部UIScrollView.到目前为止,似乎它可能正常工作.
但是,页面显示全屏图像,滚动性能是一个问题.但是,我试图确定滚动视图中的Web视图的基本嵌套(Apple警告说)是否真的是问题的一部分.