2010-11-16 80 views
1

我正在爲書籍閱讀器iOS應用程序提供書籤功能。現在設置的方式是,用戶滾動查看視圖,當他們想要保存或在他們離開之前爲他們的地點添加書籤時,他們點擊底部工具欄上的保存按鈕。stringByEvaluatingJavaScriptFromString與NSUSerDefault值不工作的奇怪問題...請幫助!

當他們打這個保存按鈕,保存的動作稱爲:

-(IBAction) savePlace:(id)sender{ 

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

} 

令人驚訝的是,我有這部分工作。我可以點擊保存按鈕,控制檯會讀取屏幕上的位置200,然後當我離開並回來時,再次打印200到控制檯,這要歸功於NSUSerDefaults在調用此方法時調用應用程序加載:

- (void) setCurrentSpot:(NSUInteger)ySpot { 

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

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

但是!什麼也沒有發生......我知道我正在保存並正確檢索正確的Y軸值,但是當調用JavaScript方法時,它不會觸發。

爲了進一步複雜的事情,我繼續做訪問該相同 ySpot值,並且使用完全一樣的JavaScript方法來移動視圖位置200定製IBAction爲,它完美的作品!

我錯過了什麼?我不明白髮生了什麼事。由於

回答

1

編輯:誤解你的問題,

也許您正在調用調用JavaScript是被稱爲過快的方法是什麼?並沒有給UIWebview時間來初始化和反應?如果它在你等待webview來使用,然後調用它,那是我唯一能看到的。

+0

嘿,傑西,就是這樣!非常感謝 – Jerry 2010-11-16 17:58:41