我正在为我的图书阅读器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,它完美无缺!
我错过了什么?我不知道发生了什么。感谢
答案 0 :(得分:1)
编辑:误读了你的问题,
也许您调用的方法称调用javascript的速度太快了?并没有给UIWebview时间初始化和反应?如果它在你等待webview上来然后调用它时有效,那是我唯一能看到的东西。