Как предварительно выбрать contenteditable поле в UIWebView iOS5 - PullRequest
5 голосов
/ 03 ноября 2011

Прежде всего, я знаю, что contenteditable - это только iOS 5, которую я учел - мы даем пользователям iOS 5 функцию, позволяющую вставлять Rich Text с использованием contenteditable. Эта функция прекрасно работает, пока все, что я хочу сделать, - это когда вид, по-видимому, устанавливает поле contenteditable как активное (предварительно выбрав его), чтобы появилась клавиатура, и пользователь мог сразу же начать печатать. Вот локальный HTML-файл, который я использую для UIWebView

<html>
    <body>
        <div id="content" contenteditable="true" style="font-family: Helvetica">PLACEHOLDER</div>
    </body>
</html>

Я уже пытался использовать некоторый javascript, чтобы выполнить это, используя учебники, которые я нашел для предварительного выбора ввода текста. Я не мог заставить это работать, даже когда я пытался переключиться в поле ввода текста для тестирования. Вероятно, это связано с моей неопытностью в javascipt, поэтому, если это решение, будьте явными (поскольку я совершенно незнаком с javascript).

Спасибо за любую помощь

Ответы [ 4 ]

7 голосов
/ 11 января 2013

Теперь, если кто-то хочет добиться этого в iOS 6, он может программно открыть клавиатуру iOS следующим образом:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.

    // keyboardDisplayRequiresUserAction available in iOS >= 6 
    if ([webView respondsToSelector:@selector(setKeyboardDisplayRequiresUserAction:)]) {
        webView.keyboardDisplayRequiresUserAction = NO;
    }
}

, а затем

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    // Assuming that you're using jquery. If not, use document.getElementById('YourInputElementID')
    NSString *evalStr = [NSString stringWithFormat:@"setTimeout( function(){$('#YourInputElementID').focus();},1000);"];
    [webView stringByEvaluatingJavaScriptFromString:evalStr];
}

Это запустит этот javascript через 1сек. В целях безопасности вы должны вызвать код получения фокуса, когда фокусирующий элемент был загружен.

4 голосов
/ 04 ноября 2011

К сожалению, вы не можете сделать это в Mobile Safari. Я считаю, что Apple решила не допустить этого, потому что когда вы посещаете некоторые сайты, например, Google, поле поиска сразу фокусируется. Это было бы крайне раздражающим для пользователей, если бы на каждом сайте, на который они заходили, клавиатура всплывала. На рабочем столе это поведение не имеет значения, но на мобильных устройствах это очень заметно.

Похожие: Текстовое поле автофокусировки мобильного Safari

2 голосов
/ 17 января 2012

Вы можете вызвать клавиатуру, если находитесь в контексте обработчика события щелчка.

Например

document.body.addEventListener('click', function() {
  content.focus();
}, false);

должно работать

0 голосов
/ 04 ноября 2011

У меня нет информации о contenteditable на iOS, но я думаю, что вы должны просто создать диапазон и добавить его в выборку.

...