2010-08-24 33 views
6

我加載網頁視圖,並設置allowsScrolling爲NO,但仍然web視圖顯示滾動條...您的電腦上敲打你的頭以上,現在MacBook有鋒利的金屬邊緣傷害了很多。可可的WebView滾動條不會消失

我的代碼:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification { 
    // Insert code here to initialize your application 
    NSString *webFolder = @"file:///<WebFolderPath>"; 
    [[[productWeb mainFrame] frameView] setAllowsScrolling:NO]; 
    [productWeb setFrameLoadDelegate:self]; 
    [[productWeb mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:[webFolder stringByAppendingString:@"webpage.html"]]]]; 
} 

我甚至安裝框架加載代表報告有關滾動狀態:

- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame 
{ 
    NSLog(@"Scrolling %@",[[frame frameView] allowsScrolling] ? @"Allowed" : @"Not Allowed"); 
    [[frame frameView] setAllowsScrolling:NO]; 
    NSLog(@"Scrolling %@",[[frame frameView] allowsScrolling] ? @"Allowed" : @"Not Allowed"); 
} 

仍然給了我不爽:

2010-08-24 15:20:09.102 myApp[30437:a0f] Scrolling Allowed 
2010-08-24 15:20:09.104 myApp[30437:a0f] Scrolling Not Allowed 

而且但滾動條繼續顯示!希望這是愚蠢的,因爲我不想在筆記本電腦上獲得更多血液。

回答

1

我發現我已經編輯我試圖顯示,以確保它是設置採取全屏幕(而不是更多)頁面的HTML ......曾經有一個最小寬度設定一個DIV 。一旦我確定身體有高度= 100%,並且沒有的DIV的有一個固定的或最小寬度組較小話,我想表現它的盒子都走到了一起:)

0

您是否試圖阻止用戶滾動視圖?您可以設置productWeb.userInteractionEnabled = NO。或者你只是試圖阻止用戶滾動時顯示條形圖嗎?

這裏是另一回事,你可以嘗試:注入一些JavaScript到您的UIWebView禁用的TouchMove事件:

[productWeb stringByEvaluatingJavaScriptFromString:@"document.ontouchmove = function(e){e.preventDefault();}"]; 

這讓使用戶交互,但應防止任何滾動。

+0

我覺得這是O​​S X,雖然沒有iOS版... – Wevah 2010-08-25 02:39:45

+0

啊,好點 - 我必須有iPhone的大腦。 – Don 2010-08-25 15:32:50

+0

是的,最近iPhone框架似乎越來越受到關注。我很想看到帶到核心可可的許多功能。 – BadPirate 2010-08-25 21:59:59

-1

我猜你的網絡視圖位於正在加載的筆尖之前-applicationDidFinishLaunching:被調用。

速戰速決:

  1. 在你的筆尖,選擇窗口,然後取消選擇「可見在啓動」屬性。
  2. 然後調用-setAllowsScrolling:後,打電話向-[self.window makeKeyAndOrderFront:nil]顯示窗口。

一個更好的解決方法是從應用程序的委託將你的窗口加載代碼到窗口控制器子類,做號召-setAllowsScrolling:-[NSWindowController windowDidLoad],並調用-[NSWindowController showWindow:]從應用程序委託,以顯示窗口。

+0

這不是,appliactionDidFinishLaunching發生在筆尖加載後,他的NSLog清楚地顯示該對象確實存在。 – 2014-02-14 00:56:03

0

試試這個,如果你用斯威夫特:

import Foundation 
import Cocoa 
import WebKit 


class WebViewRep: WebView { 

    //... hidden code 

    required init?(coder: NSCoder) { 
     super.init(coder: coder) 
     //Disable scrolling 
     self.mainFrame.frameView.allowsScrolling = false 
     //Sets current object as the receiver of delegates 
     self.policyDelegate = self 
     self.frameLoadDelegate = self 
     //Load homepage 
     self.loadHomePage() 
    } 

    //... hidden code 

    override func webView(sender: WebView!, didFinishLoadForFrame frame: WebFrame!) { 
     //Completely disable scroll 
     frame.frameView.allowsScrolling = false 
     self.stringByEvaluatingJavaScriptFromString("document.documentElement.style.overflow = 'hidden';") 
    } 

} 

可悲的是,它不是足夠使用allowScrolling。它有時可用,但並非總是如此。所以,你也必須操縱加載的頁面。

當然,不要忘記設置WebViewRep爲您的WebView自定義類。