2010-11-16 79 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