Странная проблема с stringByEvaluatingJavaScriptFromString не работает со значением NSUSerDefault ... пожалуйста, помогите! - PullRequest
1 голос
/ 16 ноября 2010

Я работаю над функцией закладки для приложения для чтения книг 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]];
}

НО!Ничего не происходит ... Я точно знаю, что я сохраняю и правильно извлекаю правильное значение оси Y, но когда этот метод JavaScript вызывается, он не сработает.

Чтобы еще больше усложнить ситуацию, яМы создали собственный IBAction, который получает доступ к тому же тому же значению ySpot, и использовали точно такой же метод JavaScript, чтобы переместить представление на позицию 200, и он отлично работает!

Чего мне не хватает?Я не вижу, что происходит.Спасибо

1 Ответ

1 голос
/ 16 ноября 2010

edit: неправильно прочитал ваш вопрос,

Возможно, метод, который вы вызываете для вызова этого javascript, вызывается слишком быстро? и не давая UIWebview время для инициализации и реагирования? если он работает, когда вы ждете, когда появится веб-представление, а затем позвоните, это единственное, что я смог увидеть.

...