Получение Objective-C для общения с JavaScript с помощью UIWebView

Я создаю приложение для iPad, которое загружает локальные html-файлы в UIWebView. У меня есть int, хранящийся в контроллере представления, который я хочу использовать, чтобы определить, какой контент загружать в html-документ.

Кроме того, я хочу иметь интерактивные ссылки в html, которые создают новые, меньшие UIWebViews на самом высоком уровне, например, «всплывающее окно».

Как отправлять данные туда и обратно из Obj-C в Javascript?


person Chris    schedule 17.09.2010    source источник


Ответы (1)


Вы можете отправлять данные из слоя Cocoa в слой JavaScript, используя метод stringByEvaluatingJavaScriptFromString: в UIWebView.

Уровень Cocoa также может «перехватывать» клики по ссылкам, реализуя протокол UIWebViewDelegate в вашем контроллере представления; при нажатии на ссылку будет вызван метод делегата webView:shouldStartLoadWithRequest:navigationType:, и в этот момент слой Cocoa сможет выполнить действие «всплывающее окно», которое вы ищете.

(Хотя я хотел бы спросить вас, почему вы хотите генерировать подобные всплывающие окна. Моя интуиция подсказывает мне, что это будет выглядеть и ощущаться довольно раздражающим с точки зрения пользователя.)

person Shaggy Frog    schedule 17.09.2010
comment
Возможно, всплывающее окно было неудачным выбором слова. Я хочу, чтобы пользователи могли нажимать на определенные слова, открывая небольшой вид сверху, который даст больше информации о выбранном слове. (Изображение, определение и т. д.) - person Chris; 17.09.2010
comment
@ Крис, ответ, который я тебе дал, применим и к этому сценарию. Суть в том, чтобы знать, когда пользователь нажал на ссылку, а затем действовать. - person Shaggy Frog; 17.09.2010
comment
Да, это будет. Большое спасибо за ответ. Единственное, что меня беспокоит, это то, что метод делегата вызывается всякий раз, когда пользователь щелкает любую ссылку, но не получает никакой информации о том, какая ссылка нажата (адрес, текст и т. д.), поэтому это не поможет, если у меня есть несколько ссылок в один и тот же документ, каждый из которых должен представлять разное содержание. - person Chris; 18.09.2010
comment
@ Крис, ты ошибаешься. Если вы внимательно посмотрите на метод, то увидите, что один из параметров является объектом NSURLRequest, который будет содержать информацию о ссылке, по которой щелкнули. - person Shaggy Frog; 18.09.2010
comment
Сэр, вы мой герой, и я чувствую себя глупо. Огромное спасибо. - person Chris; 18.09.2010
comment
@ Крис, не беспокойся. Если вы нашли этот ответ полезным, не стесняйтесь отметить его как ответ и проголосовать за него. - person Shaggy Frog; 18.09.2010