在方向更改时从objective C调用javascript函数

在方向更改时从objective C调用javascript函数,javascript,objective-c,cordova,orientation,Javascript,Objective C,Cordova,Orientation,首先,我想说我是一个绝对客观的C新手。 我一直在到处寻找解决办法,但不知何故,我似乎无法让它发挥作用 我只想在发生方向更改事件时从Objective C运行Javascript函数,看看这是在方向更改动画开始之前执行Javascript的唯一方法 我已经能够获得一个NSLog来显示方向发生变化的时间,但是无论我尝试什么,我都无法执行任何Javascript。甚至连console.log()或alert()都没有,更不用说我想要触发的实际函数了 谁能帮我省下一个下午的试错时间 已解决 将其放入d

首先,我想说我是一个绝对客观的C新手。 我一直在到处寻找解决办法,但不知何故,我似乎无法让它发挥作用

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

我已经能够获得一个NSLog来显示方向发生变化的时间,但是无论我尝试什么,我都无法执行任何Javascript。甚至连console.log()或alert()都没有,更不用说我想要触发的实际函数了

谁能帮我省下一个下午的试错时间


已解决

将其放入didFinishLaunchingWithOptions(AppDelegate.m)中:

就在下面

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

您应该能够做到这一点:

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
    [(UIWebView *)self.visibleViewController.view stringByEvaluatingJavaScriptFromString:@"someGlobalJSFunction();"];
}
您对UIWebView的引用可能必须根据项目的设置方式进行更改


旋转完成后,可以对事件使用didRotateFromInterfaceOrientation。不过,我发现这有时会提前一点触发,让JS重新绘制。我通过在它调用的JS函数中设置一个短超时来解决这个问题。

你能发布你所拥有的吗?它显示了你的意图,是一个让知情者帮助你展示该做什么的好地方。:)我添加了迄今为止我一直在努力工作的代码。我放置了
[(UIWebView*)self.visibleViewController.view stringByEvaluatingJavaScriptFromString:@“someGlobalJSFunction();”在我的OrientationIDChange函数中,但它引发以下异常:-[UIView stringByEvaluatingJavaScriptFromString:]:发送到实例0x1CD68530的选择器无法识别,这可能意味着self.visibleViewController.view未引用UIWebView。我将行更改为
[self.viewController.webView stringByEvaluatingJavaScriptFromString:@“hideContentsDuringOrientationChange();”];
现在它可以工作了!非常感谢您为我指出了正确的方向:-)
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
    [(UIWebView *)self.visibleViewController.view stringByEvaluatingJavaScriptFromString:@"someGlobalJSFunction();"];
}