1

首先,我想说我是一个绝对的 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();"];
}
4

1 回答 1

0

你应该能够做到这一点:

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

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

旋转完成后,您可以将 didRotateFromInterfaceOrientation 用于事件。不过,我发现这有时会触发 JS 重绘的时间有点早。我通过在它调用的 JS 函数中设置一个短暂的超时来解决这个问题。

于 2013-02-25T16:13:05.377 回答