1

私は自分が持っているブックリーダーiOSアプリのブックマーク機能に取り組んでいます。現在の設定方法では、ユーザーはビューをスクロールし、保存したいとき、または離れる前にスポットをブックマークしたいときに、下部のツールバーの保存ボタンを押します。

この保存ボタンを押すと、保存されたアクションが呼び出されます。

-(IBAction) savePlace:(id)sender{

     int pageYOffset = [[webView stringByEvaluatingJavaScriptFromString:@"window.pageYOffset"] intValue];
     NSLog(@"%d Set Y Value", pageYOffset);
     [[NSUserDefaults standardUserDefaults] setSavedSpot:pageYOffset];

}

驚いたことに、私はこの部分を機能させました。保存ボタンを押すと、コンソールは画面上の現在の場所を200と表示します。その後、離れて戻ったときに、NSUSerDefaultsによって呼び出されるこのメソッドのおかげで、200が再びコンソールに出力されます。アプリの読み込み:

- (void) setCurrentSpot:(NSUInteger)ySpot {

       NSLog(@"%d Saved Y Value", ySpot);

         [webView stringByEvaluatingJavaScriptFromString: [NSString stringWithFormat: @"window.scrollTo(0, %d);", ySpot]];
}

しかし!何も起こりません...正しいY軸の値を保存して正しく取得していることは知っていますが、そのJavaScriptメソッドが呼び出されても起動しません。

さらに複雑なことに、同じySpot値にアクセスするカスタムIBActionを作成し、まったく同じJavaScriptメソッドを使用してビューを位置200に移動しました。これは、完全に機能します。

私は何が欠けていますか?何が起こっているのかわかりません。ありがとう

4

1 に答える 1

1

編集:あなたの質問を読み間違え、

おそらく、そのjavascriptを呼び出すために呼び出しているメソッドの呼び出しが速すぎますか?UIWebviewに初期化して反応する時間を与えていませんか?Webビューが表示されるのを待ってからそれを呼び出すときに機能する場合は、それが私が見ることができる唯一のものです。

于 2010-11-16T17:51:59.587 に答える