Задать текст для текстового поля в UIWebView

#objective-c #cocoa-touch #ios #uiview #uiwebview

#objective-c #cocoa-touch #iOS #uiview #uiwebview

Вопрос:

У меня есть UIWebView, и я хочу присвоить одному из его текстовых полей определенный текст. Возможно ли это вообще? Если да, то как я могу это сделать? Спасибо

Ответ №1:

Да, вы можете задать текст для текстового поля в UIWebView с помощью javascript

В качестве примера, если у вас есть текстовое поле в этой форме

 <input id="textFieldID" type="text" value="TextValue"/>
  

Установка значения:

 [theWebView stringByEvaluatingJavaScriptFromString:@"document.getElementById('textFieldID').value = 'Hello World'"]
  

Получение значения:

 NSString* value = [theWebView stringByEvaluatingJavaScriptFromString:@"document.getElementById('textFieldID').value"];
  

Комментарии:

1. Как я могу узнать идентификатор текстового поля, спасибо за ответ.

2. В зависимости от того, к какому типу поля вы хотите получить доступ, вы всегда можете получить поля с помощью: document.getElementsByTagName(), где вы затем указываете, нужно ли вам TEXTAREA, INPUT или SELECT, а затем просто выбираете одно из возвращаемого им массива. Если вы хотите получить второе поле ввода со всей страницы, вам просто: document.getElementsByTagName(‘ВВОД’)[1].значение

3. в document.getElementsByTagName(‘INPUT’)[1]. значение, какой код должен быть там, если я хочу, чтобы весь список текстовых полей находился внутри WebView

Ответ №2:

В Swift-5 с WKWebView используйте это

Чтобы задать текстовое поле

 webView.evaluateJavaScript("document.getElementById('textFieldID').value = 'Hello'") { (result, error) in
   print(result) //This will Print Hello
}
  

Чтобы получить значение текстового поля

 webView.evaluateJavaScript("document.getElementById('textFieldID').value") { (result, error) in
   print(result) //This will Print value of text field
}