2010-10-28 3 views
0

Je dois détecter si la barre de défilement est visible dans UIWebView, comment faire? Ma première tentative a été:La détection de la barre de défilement est visible dans le UIWebView

int scrollHeight = [[webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.scrollHeight"] intValue]; 
if(scrollHeight > [webView frame].size.height) 
    NSLog(@"Scrollbar is visible"); 

Mais le scrollHeight est toujours une façon plus grande que la hauteur WebView.

+0

Demandez-vous pourquoi vous devez savoir quand il est visible. Cela sent comme si vous faites quelque chose de mal. – jer

+0

Non, il n'y a rien de mal. C'est le souhait du client d'informer visuellement l'utilisateur quand il peut/devrait faire défiler. – cocoapriest

+0

Peut-être que vous pourriez utiliser la méthode [scrollView flashScrollIndicators] pour bling les barres de défilement et informer vos utilisateurs de cette façon? – texmex5

Répondre

0

Effectuez les opérations suivantes (aucune API privées):

for (id subView in [webView subviews]) { 
    if ([subView respondsToSelector:@selector(flashScrollIndicators)]) { 
     [subView flashScrollIndicators]; 
    } 
} 

Cela ne suppose rien de la hiérarchie UIWebView interne, mais juste s'il arrive à être un sous-vue qui répond à flashScrollIndicators ils seront flashé. ;)

+0

oui, j'ai déjà vu cela auparavant, mais j'ai besoin de créer un moyen personnalisé de visualiser ceci (pas par flashScrollIndicators) – cocoapriest

+0

Check this out: http://stackoverflow.com/questions/745160/comment déterminer-uiwebview-height-based-on-content-dans-une-hauteur-variable-uita/751326 # 751326 –

1

Une autre solution possible est de sous-classe UIWebView et mettre en œuvre les suivantes:

-(void) scrollViewWillBeginDragging:(UIScrollView *)scrollView 
{ 
    scrollView.bounces = NO; 
} 

La "ombre" ne sera pas plus visible, car rebondissant n'est plus possible ...

Questions connexes