2012-06-23 2 views
2

У меня есть веб-представление, с которого я хотел бы снять эластичность. Как и сейчас, при прокрутке страницы, которая меньше веб-просмотра, она создаст эффект эластичности, раскрывающий задний фон. Я хотел бы удалить это.Удалить эластичность от webview

Я пробовал делать следующее, но безуспешно. Он находит WebDynamicScrollBarsView, но устанавливая эластичность этого, ничего не меняет.

- (void)awakeFromNib 
{ 
    NSScrollView *scrollView = [self findScrollViewInSubviews:self.subviews]; 
    scrollView.horizontalScrollElasticity = NSScrollElasticityNone; 
    scrollView.verticalScrollElasticity = NSScrollElasticityNone; 
} 

- (NSScrollView *)findScrollViewInSubviews:(NSArray *)subviews 
{ 
    for (NSView *view in subviews) 
    { 
     if ([view isKindOfClass:[NSScrollView class]]) 
      return (NSScrollView *) view; 
     else 
      return [self findScrollViewInSubviews:view.subviews]; 
    } 

    return nil; 
} 

Кто-нибудь знает, как удалить эффект эластичности с веб-просмотра?

+0

О, извините! Я удаляю ответ. –

+0

Должно работать следующее: 'webView.mainFrame.frameView.documentView.enclosingScrollView.verticalScrollElasticity = NSScrollElasticityNone;' – Anne

+0

@Anne К сожалению, это не имело никакого эффекта. – simonbs

ответ

6

В моем подклассу WebView (или вы можете просто сделать это непосредственно, с webView.mainFrame.frameView.documentView.enclosingScrollView, но это делает его более легким для меня лично)

// return the scroll view that we are currently using, if applicatble 
- (NSScrollView *)mainScrollView { 
    return [[[[self mainFrame] frameView] documentView] enclosingScrollView]; // can be nil 
} 

Тогда на финише нагрузки, так как Энн отметила буквально, как я набрав мой ответ :),

- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame { 
    NSScrollView *mainScrollView = [sender mainScrollView]; 
    [mainScrollView setVerticalScrollElasticity:NSScrollElasticityNone]; 
    [mainScrollView setHorizontalScrollElasticity:NSScrollElasticityNone]; 
} 

Я не уверен, если это делать после того, как содержимое загружается необходимо, но я не имею мой макинтош со мной, чтобы попробовать прямо сейчас.

+0

Это исправлено. Спасибо! :-) – simonbs

+0

Это сработало и для меня. Благодаря! – Joel

+0

Это нужно сделать после загрузки содержимого, потому что кажется, что он сбрасывается между doCommitLoadForFrame и didFinishLoadForFrame –

Смежные вопросы