私は自分が持っているブックリーダー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に移動しました。これは、完全に機能します。
私は何が欠けていますか?何が起こっているのかわかりません。ありがとう