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 に答える