我有一个有趣的要求。我有一个webview,当用户刷新时,它的大小会扩大。这很好用,但现在我试图检测用户是否已滚动到顶部,以便我可以再次将其最小化。
我试图通过在webview后面放置一个图像来做到这一点,如果用户滚动浏览webview的顶部,则会发生反弹效果并且底层图像变得可见。我试图使用“隐藏”属性,认为图像在webview下隐藏,但在webview被拉下时可见。然而,这似乎无法正常工作。
任何人都对如何检测按钮/图像是否对用户可见有什么想法?
答案 0 :(得分:2)
因为UIWebView实现了UIScrollViewDelegate,它声明符合该协议,所以您可以使用ScrollViewDidScroll
委托方法。
首先确保您的UIWebView
不在UIScrollView
重要提示:您不应该嵌入UIWebView或UITableView对象 UIScrollView对象。如果这样做,可能会导致意外行为 因为两个对象的触摸事件可能混淆错误 处理。
相反,您可以通过UIWebView属性访问UIScrollView,因为我们现在知道UIWebView基于UIScrollView。您的视图控制器可以实现UIScrollViewDelegate。
@interface MyViewController : UIViewController<UIScrollViewDelegate>
@end
然后你必须将webview中的scrollView属性设置为UIScrollViewDelegate,如下所示:
- (void)viewDidLoad
{
[super viewDidLoad];
// Set the scrollView property's delegate protocol to self. This is so that this view controller will receive the delegate methods being fired when we interact with the scrollView.
webView.scrollView.delegate = self;
}
我们只对ScrollView的委托方法之一 - scrollViewDidScroll感兴趣。然后你可以检测滚动视图何时在webview中滚动,并最终有一个简单的数学方程式来检查scrollView是否已滚动到顶部:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
if(scrollView.contentOffset.y <= 0.0){
NSLog(@"TOP REACHED so do the chicken dance");
}
}
答案 1 :(得分:1)
如果是Y == 0,请查看Web视图滚动视图的contentOffset,这意味着用户已向上滚动到顶部。
CGRect visibleRect;
visibleRect.origin = webView.scrollView.contentOffset;
if(visibleRect.origin.y == 0)
{
//t means that user has scrolled up to the top
}