Я не могу найти какую-либо документацию для подтверждения этого, но похоже, что метод stringByEvaluatingJavaScriptFromString можно вызывать только в переопределенных методах из делегата UIWebView. Кто-нибудь может это подтвердить?
Вот что я пробовал. Я устанавливаю кнопку в представлении, связываю ее с методом в моем viewcontroller и проверяю, что он работает нормально. Мой взгляд также имеет элемент управления UIWebView. Если я запускаю проект на симуляторе или на iPhone, никаких проблем не возникает. Затем я добавляю этот код в метод кнопки.
[theWebView stringByEvaluatingJavaScriptFromString:@"alert('Hi there!');"];
Когда я запускаю проект, я могу нажать на кнопку и увидеть подсказку «Привет!», И я могу нажать OK, чтобы закрыть его. Обычно через 4-5 секунд симулятор вылетает. Я иногда вижу ошибку "__TERMINATING_DUE_TO_UNCAUGHT_EXCEPTION__"
, но не всегда; иногда нет ошибки. Это также не всегда дает сбой в первый раз. Иногда я перехожу на другую страницу, а затем пробую снова, и она вылетает.
Если я добавлю тот же код в событие webPageDidFinishLoad, он будет работать нормально. Но я бы хотел, чтобы код вызывался, когда пользователь требует его, чтобы событие не соответствовало моим потребностям.
Я открыт для обхода, если у вас есть идеи? Заранее спасибо!