我有一个在 iPhone 上运行的应用程序,上面有一个 UIWebView。我将一个网页加载到这个视图中,用户可以通过按下我添加到页面底部 UIToolBar 的按钮继续到下一页。我所追求的是阻止用户按下这些按钮,直到他们滚动到一半或一直向下滚动页面。这可能吗?
问问题
483 次
3 回答
4
如果它将位于页面的一半并且更远,那么您可能可以使用 webview 的滚动视图的内容偏移量。
我会在你的控制器中创建一个引用 webview 的滚动视图的实例变量。在 iOS 5 中,您可以使用 webview.scrollView 属性来访问 scrollView,但在以前的版本中,您必须搜索 webView 的子视图。
if([_webView respondsToSelector:@selector(scrollView)]) {
_webViewScrollView = _webView.scrollView;
}
else {
for (UIView *subview in _webView.subviews) {
if ([subview isKindOfClass: [UIScrollView class]]) {
_webViewScrollView = subview;
break;
}
}
}
然后我会将滚动视图委托设置为我感兴趣的控制器
_webViewScrollView.delegate = self;
并实现以下委托方法:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
if( scrollView.contentOffset.y > someValue ) {
// Enable Buttons
}
else {
// Make / Keep buttons inactive..
}
}
另一种方法是使用一些 javascript 并使用 stringByEvaluatingJavaScriptFromString 做一些时髦的东西
于 2012-04-25T08:39:20.003 回答
1
使用scrollView
UIWebView 的属性并使用其委托回调
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView;
处理滚动结束事件和 UIScrollview 属性 contentOffset 可以告诉您滚动位置相对于其内容大小(您网页的实际大小)。
于 2012-06-20T10:09:43.667 回答
0
在应用程序启动时使您的工具栏按钮禁用。然后通过添加此行检查当前滚动位置。
int position = [webView stringByEvaluatingJavaScriptFromString:@"window.scrollBy(0,180);"];
将页面滚动到特定位置上方后,启用工具栏按钮。 或者 您可以使用滚动视图委托方法。
于 2012-04-25T08:25:40.417 回答