如何停止 UIWebView 在 phonegap 3.0 中垂直弹跳

Posted

技术标签:

【中文标题】如何停止 UIWebView 在 phonegap 3.0 中垂直弹跳【英文标题】:How to stop UIWebView bouncing vertically in phonegap 3.0 【发布时间】:2013-09-14 07:41:54 【问题描述】:

已尝试过此论坛和其他论坛的许多建议,包括将“DisallowOverscroll”设置为“true”。这是在phonegap 3.0中被破坏的吗?

【问题讨论】:

【参考方案1】:

config.xml进行某些更改,

如果你在 android 上使用它,那么使用

<preference name="disallowOverscroll" value="true" />

<preference name="webviewbounce" value="false" />

对于ios,使用like

<preference name="DisallowOverscroll" value="true" />

<preference name="webviewbounce" value="false" />

希望对你有所帮助。

编辑

config.xml 文件中进行更改后执行cordova build,以便更改影响您的项目。只有在您执行cordova build

之后,上述步骤才能解决您的问题

【讨论】:

谢谢 - 当我创建一个新项目时,它适用于 2.9.0 和 3.0.0 - 所以必须是我修改的一些代码;(...! 它拯救了我的一天。非常感谢朋友。 我会将其添加为答案的编辑,但@RoryStandley 以及即使在遵循此答案后也遇到问题的任何其他人,您需要在为更改对项目生效。 webviewbounce 被 DisallowOverscroll 取代。从 Cordova 3.6.3 开始,它不适用于 Windows Phone。 在 Cordova 5.0.0 中为我工作【参考方案2】:

在 AppDelegate.h 文件中,初始化 MainViewController 后,您可以通过在 webview 中设置 scrollView 类来禁用此弹跳:

- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions

    ....................

    self.viewController.webView.scrollView.bounces = NO;
    return YES;

config.xml文件中的配置值没有用到,我在Cordova项目里都搜了。

【讨论】:

【参考方案3】:

这是我在 xcode 中使用的方法。 我不知道如何在phonegap中解决这个问题 也许这几个代码给你的想法

在viewdidload中:

webView.scrollView.delegate = self;
[webView.scrollView setShowsHorizontalScrollIndicator:NO];



-(void)scrollViewDidScroll:(UIScrollView *)scrollView

if (scrollView.contentOffset.x > 0  ||  scrollView.contentOffset.x < 0 )
    scrollView.contentOffset = CGPointMake(scrollView.contentOffset.y, 0);

【讨论】:

【参考方案4】:

对于 Cordova 3.x 及更高版本,我相信您可以在MainViewController.m 中设置您的(void)webViewDidFinishLoad,如下所示:

- (void)webViewDidFinishLoad:(UIWebView*)theWebView 
    // Black base color for background matches the native apps
    theWebView.backgroundColor = [UIColor blackColor];
    theWebView.scrollView.bounces = NO;
    return [super webViewDidFinishLoad:theWebView];

已测试:Cordova 3.4、3.5。

【讨论】:

【参考方案5】:

在您的 AppDelegate.m 文件中,“(UIApplication*)application didFinishLaunchingWithOptions..”部分应如下所示:

/**
 * This is main kick off after the app inits, the views and Settings are setup here. (preferred - iOS4 and up)
 */
- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions

    CGRect screenBounds = [[UIScreen mainScreen] bounds];

#if __has_feature(objc_arc)
        self.window = [[UIWindow alloc] initWithFrame:screenBounds];
#else
        self.window = [[[UIWindow alloc] initWithFrame:screenBounds] autorelease];
#endif
    self.window.autoresizesSubviews = YES;

#if __has_feature(objc_arc)
        self.viewController = [[MainViewController alloc] init];
#else
        self.viewController = [[[MainViewController alloc] init] autorelease];
#endif

    // Set your app's start page by setting the <content src='foo.html' /> tag in config.xml.
    // If necessary, uncomment the line below to override it.
    // self.viewController.startPage = @"index.html";

    // NOTE: To customize the view's frame size (which defaults to full screen), override
    // [self.viewController viewWillAppear:] in your view controller.

    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];

    self.viewController.webView.scrollView.bounces = NO;
    return YES;

只需在 return YES;

之前添加 self.viewController.webView.scrollView.bounces = NO;

【讨论】:

以上是关于如何停止 UIWebView 在 phonegap 3.0 中垂直弹跳的主要内容,如果未能解决你的问题,请参考以下文章

如何使 gif 在 UIWebView 中永不停止?

PhoneGap 是只使用 UIWebVIew 还是做更多的事情?硝基?

如何在 Phonegap IOS 中停止过度滚动/弹跳

如何在 iOS 中使用 Phonegap 配置键盘?

关于UIWebView的总结

如何在向下滑动 UIWebView 以修复 iOS7 状态栏覆盖问题后更改 UIWebView 背景颜色?