2014-10-03 87 views
1
- (void)preventGADBannerViewBounceScrolling:(GADBannerView*)bannerView { 
    for (UIWebView *webView in bannerView.subviews) { 
     if ([webView isKindOfClass:[UIWebView class]]) { 
      webView.scrollView.scrollEnabled = NO; 
      webView.scrollView.bounces = NO; 
     } 
    } 
} 

我一直在使用上述代碼來停止滾動AdMob橫幅。AdMob 6.12.0 - 防止滾動(iOS)

我剛剛更新了SDK到最新版本(6.12.0),並具有該代碼與以下調用它...

[self.view addSubview:self.adMobBannerView]; 
[self preventGADBannerViewBounceScrolling:(GADBannerView *)_adMobBannerView]; 

不執行任何操作上最新的SDK,我想知道如果任何人有有這個問題並解決它?

此外,當這個問題上,我注意到一些開發人員已經制作了他們的橫幅,所以如果用戶點擊,然後它在應用程序內的Web視圖中打開,並在右側角落有一個「完成」按鈕,沒有完全離開應用程序時,他們按下的應用程序內廣告,我認爲這是天才...

如果任何人都可以告訴我如何做到這一點,我將非常感激!

回答

1

它看起來像一個UIWebView被包裹成一個更鑑於新的SDK,所以最好還是要經過整個子視圖樹:

- (void)walkSubviewsOfView:(UIView *)v block:(void (^)(UIView *))block { 
    block(v); 
    for (UIView *subview in v.subviews) { 
     [self walkSubviewsOfView:subview block:block]; 
    } 
} 

- (void)disableBannerWebViewBouncing { 
    [self walkSubviewsOfView:_bannerView block:^(UIView *v) { 
     for (UIGestureRecognizer *r in v.gestureRecognizers) { 
      if ([NSStringFromClass(r.class) isEqual:@"UIWebTouchEventsGestureRecognizer"]) 
        r.enabled = NO; 
     } 
     if ([v isKindOfClass:[UIScrollView class]]) 
      ((UIScrollView *)v).bounces = NO; 
    }]; 
} 

當然這一點是不是一個面向未來的解決方案,以及,我我更喜歡SDK中會有相應的屬性。

+0

非常感謝你aleh。在最新的SDK上完美工作! – Garyo 2014-10-10 11:07:31

1

我ALEH的答案的非塊版本去了,我發現它更易於閱讀:

- (void)removeScrollingFromView:(UIView *)view 
{ 
    for (UIView *subview in view.subviews) { 
     [self removeScrollingFromView:subview]; 
    } 
    if ([view isKindOfClass:[UIWebView class]]) { 
     ((UIWebView *)view).scrollView.scrollEnabled = NO; 
     ((UIWebView *)view).scrollView.bounces = NO; 
    } 
} 

我知道我不會有任何的滾動廣告,但如果這樣做,只是禁用彈跳和不滾動。如果你投我的答案,請考慮給aleh一個投票了!