我正在为我拥有的图书阅读器 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 方法时,它不会触发。
更复杂的是,我继续制作了一个自定义 IBAction 来访问相同的 ySpot 值,并使用完全相同的 JavaScript 方法将视图移动到位置 200,它完美地工作!
我错过了什么?我不明白发生了什么。谢谢