2017-01-18 8 views
2

У нас есть приложение Xamarin (Android), которое на одном этапе открывает веб-представление (Webkit.Webview не Forms.Webview). Это направляет пользователя на страницу на стороннем сайте, который был настроен для нас.Как заставить выбор типа клавиатуры в Xamarin.Webkit.Webview

Во-первых - в определенных полях ввода клавиатура, которая отображается, неверна - мы ожидаем отменной клавиатуры (т. Е. «Готово» в нижнем углу, а не «Отправить»). Я знаю, что это можно изменить, но не уверен, что это правильный способ сделать это. Должны ли это быть метаданные/текстовые входы на веб-странице, которая была изменена? Если да - , что нужно изменить для ввода текстового поля на html страницы? Только тип? то есть:

<input type="email"> 

Во-вторых, а не ждать третьей стороны, чтобы исправить страницу, есть способ, которым мы можем заставить WebView всегда открывать определенный тип клавиатуры?

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

Цените помощь, не уверен, что путь вперед здесь.

Благодаря

+1

К вашему второму вопросу о форсировании типа клавиатуры это выглядит как [this] (https://forums.xamarin.com/discussion/65222/inputmethods-editorinfo-imeoptions-data-type-wrong-problem-when- overriding-oncreateinputconnection) post может по крайней мере принудительно изменить текст кнопки «Готово». Никогда не пробовал. Я знаю, для вашего первого вопроса, что разная версия Android будет радикально отличаться с точки зрения того, как они обрабатывают типы ввода и/или если они вообще их поддерживают. Это очень к сожалению. Какая самая низкая версия Android, на которую вы нацеливаетесь? – hvaughan3

+0

Самый низкий 4.2.2. Я прочитаю сообщение, которое вы упомянули, и посмотрите, что я придумал. Я думаю, что расширение Webview - это путь вперед, просто хочу знать, какую часть его мне нужно настроить, чтобы заставить определенную мягкую клавиатуру или какие части веб-сайта мне нужно изменить – DarthJam

+0

@ hvaughan3 - этот пост очень помог , на данный момент нам удалось найти приемлемый компромисс. Назначение outAttrs.ImeOptions = (ImeFlags) ImeAction.Next; Тем не менее, я надеялся просто отпустить клавиатуру, как это делает мягкая кнопка устройства. Невозможно увидеть параметр в перечислении. Есть идеи? Cheers – DarthJam

ответ

2

Из комментариев: Для вашего второго вопроса о принудительной кнопке клавиатуры, вы можете проверить this link, который описывает, как переопределить OnCreateInputConnection для указания клавиатуры введите тип кнопки.

public class MyWebView : WebView { 
    ... 
    public override IInputConnection OnCreateInputConnection (EditorInfo outAttrs) { 
     var inputConnection = base.OnCreateInputConnection (outAttrs); 
     // outAttrs.ImeOptions in Xamarin only allows ImeFlags but it also should allow ImeActions 
     outAttrs.ImeOptions = outAttrs.ImeOptions | (ImeFlags)ImeAction.Next; 
     return inputConnection; 
    } 
} 

Это не уволит клавиатуру при постукивании, хотя, так как она предназначена для take the user to the next input. Надеюсь, кто-то еще может прийти и дать лучший ответ или дать хороший способ убрать клавиатуру в этой ситуации, не взломав что-то вместе.