我加载了webview并将allowsScrolling设置为NO,但是webview仍然显示滚动条...现在MacBooks有锋利的金属边缘,在你的计算机上敲打你的头很多。
我的代码:
- (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
然而滚动条继续显示!希望这是我做的蠢事,因为我不想在笔记本电脑上再吸血。
答案 0 :(得分:1)
我发现我必须编辑我试图显示的页面的HTML,以确保它设置为全屏(而不是更多)...有一个DIV设置了最小宽度。一旦我确定身体的高度= 100%并且DIV没有一个固定的或最小的宽度设置小于那个我希望在所有东西中显示它的盒子:)
答案 1 :(得分:0)
您是否试图阻止用户滚动视图?您只需设置productWeb.userInteractionEnabled = NO
即可。或者您只是想在用户滚动时阻止显示条形图?
这是你可以尝试的另一件事:在你的UIWebView中注入一些禁用touchmove事件的JavaScript:
[productWeb stringByEvaluatingJavaScriptFromString:@"document.ontouchmove = function(e){e.preventDefault();}"];
这会启用用户交互,但应阻止任何滚动。
答案 2 :(得分:0)
如果你使用Swift试试这个:
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的自定义类。
答案 3 :(得分:-1)
我猜你的网页视图是在 -applicationDidFinishLaunching:
被调用之前加载的笔尖。
快速修复:
-setAllowsScrolling:
后,请致电-[self.window makeKeyAndOrderFront:nil]
以显示该窗口。更好的解决方法是将窗口加载代码从app委托转移到窗口控制器子类,在-setAllowsScrolling:
中调用-[NSWindowController windowDidLoad]
,然后从应用委托中调用-[NSWindowController showWindow:]
显示窗口。