首先,我想说我是一个绝对的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();"];
}
答案 0 :(得分:0)
你应该可以这样做:
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
[(UIWebView *)self.visibleViewController.view stringByEvaluatingJavaScriptFromString:@"someGlobalJSFunction();"];
}
您对UIWebView的引用可能必须根据项目的设置方式进行更改。
旋转完成后,您可以将didRotateFromInterfaceOrientation用于事件。我发现这有时会让JS稍微重新开始重绘。我通过在它调用的JS函数中设置一个短暂的超时来修复它。