stringByEvaluatingJavaScriptFromString的奇怪问题不能与NSUSerDefault值一起使用...请帮忙!

时间:2010-11-16 17:38:17

标签: javascript iphone methods nsuserdefaults ibaction

我正在为我的图书阅读器iOS应用程序开发书签功能。现在设置它的方式,用户滚动浏览视图,当他们想要保存或在他们离开之前将他们的地点加入书签时,他们点击底部工具栏上的保存按钮。

当他们点击此保存按钮时,将调用已保存的操作:

-(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]];
}

BUT!什么都没发生......我知道我正在保存并正确检索正确的Y轴值,但是当调用该JavaScript方法时,它不会触发。

为了进一步复杂化,我继续制作了一个自定义IBAction,可以访问 相同的 ySpot值,并使用完全相同的JavaScript方法将视图移动到位置200,它完美无缺!

我错过了什么?我不知道发生了什么。感谢

1 个答案:

答案 0 :(得分:1)

编辑:误读了你的问题,

也许您调用的方法称调用javascript的速度太快了?并没有给UIWebview时间初始化和反应?如果它在你等待webview上来然后调用它时有效,那是我唯一能看到的东西。