2014-01-13 64 views
1

我有一個有趣的需求。我有一個webview,當用戶向上滑動時,它的大小會擴大。這很好,但現在我試圖檢測用戶是否滾動到頂部,以便我可以再次將其最小化。確定按鈕是否可以被用戶看到

我想通過將圖像放置在webview後面,如果用戶滾動瀏覽webview頂部,彈跳效果發生,底層圖像變得可見,請執行此操作。我試圖使用「隱藏」屬性,認爲該圖像在webview下隱藏,但在webview被拉下時可見。但是,這似乎並沒有正常工作。

任何人有任何想法如何檢測用戶是否可見按鈕/圖像?

+1

那麼你其實是想達到什麼目的?隱藏webview背後的視圖或檢測用戶何時滾動? – Pavan

+0

我真正需要做的就是調用一個方法,如果用戶已經滾動到web視圖的頂部。這可能是錯誤的方法......對此有任何想法? – user2492064

+0

當用戶向下滾動頁面時,webview會展開,但您希望webview在用戶滾動時收縮? – Pavan

回答

2

因爲UIWebView的實現UIScrollViewDelegate,它聲明符合該協議,您可以使用ScrollViewDidScroll委託方法。

首先確保你的UIWebView是不是裏面UIScrollView

重要:您不應該在 的UIScrollView對象嵌入的UIWebView或UITableView的對象。如果這樣做,可能會導致意外的行爲 ,因爲兩個對象的觸摸事件可能混淆並且錯誤地處理了 。

相反,您可以通過UIWebView屬性訪問UIScrollView,因爲我們現在知道UIWebView基於UIScrollView。你的視圖控制器可以實現UIScrollViewDelegate。

@interface MyViewController : UIViewController<UIScrollViewDelegate> 
@end 

然後你有你的網頁視圖內滾動視圖屬性設置爲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; 
} 

我們只在滾動型的委託方法的一個興趣 - scrollViewDidScroll。然後,當滾動視圖已滾動網頁視圖中可以檢測並最終有一個簡單的數學公式來檢查,如果滾動視圖已滾動到頂端:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    if(scrollView.contentOffset.y <= 0.0){ 
     NSLog(@"TOP REACHED so do the chicken dance"); 
    } 
} 
+1

完美的作品!非常感謝! – user2492064

1

查找Web視圖的滾動視圖的contentOffset,如果它是Y == 0,則表示用戶已滾動到頂部。

CGRect visibleRect; 
visibleRect.origin = webView.scrollView.contentOffset; 
if(visibleRect.origin.y == 0) 
{ 
//t means that user has scrolled up to the top 
} 
+1

嘿,哥們,只是爲了讓你知道未來,這隻會讓用戶知道在這段代碼執行時scrollView是否在頂部。 OP要求的是隻有當用戶滾動時纔會發生某些事情。因此,我們使用ScrollViewDidScroll委託方法,並在用戶向上滾動時自動檢測。 – Pavan

+0

@Pavan好吧先生,我明白了。 –

相關問題