在方向改变时从目标C调用javascript函数

时间:2013-02-25 15:42:09

标签: javascript objective-c cordova orientation

首先,我想说我是一个绝对的Objective C新手。 我一直在寻找解决方案,但不知怎的,我似乎无法让它发挥作用。

我想要的是在方向更改事件发生时从Objective C运行Javascript函数,看看这是在方向更改动画开始之前执行Javascript 的唯一方法。

我已经能够让NSLog显示何时发生方向更改,但无论我尝试什么,我都无法执行任何 Javascript。甚至不是console.log()或alert(),更不用说我想触发的实际函数了。

有人可以在另一个下午的试错中拯救我吗?


解决

将它放在didFinishLaunchingWithOptions(AppDelegate.m)中:

    [[NSNotificationCenter defaultCenter] addObserver: self
        selector: @selector(orientationDidChange:)
        name: UIApplicationDidChangeStatusBarOrientationNotification
        object: nil];

就在下面

- (void) orientationDidChange: (NSNotification *) note
{
    [self.viewController.webView stringByEvaluatingJavaScriptFromString:@"hideContentsDuringOrientationChange();"];
}

1 个答案:

答案 0 :(得分:0)

你应该可以这样做:

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
    [(UIWebView *)self.visibleViewController.view stringByEvaluatingJavaScriptFromString:@"someGlobalJSFunction();"];
}

您对UIWebView的引用可能必须根据项目的设置方式进行更改。

旋转完成后,您可以将didRotateFromInterfaceOrientation用于事件。我发现这有时会让JS稍微重新开始重绘。我通过在它调用的JS函数中设置一个短暂的超时来修复它。