1

我正在为我拥有的图书阅读器 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,它完美地工作!

我错过了什么?我不明白发生了什么。谢谢

4

1 回答 1

1

编辑:误读你的问题,

也许您调用该javascript的方法被调用得太快了?并且不给 UIWebview 时间来初始化和反应?如果它在您等待 webview 出现然后调用它时起作用,那是我唯一能看到的。

于 2010-11-16T17:51:59.587 回答