iPhone UIWebview: как заставить цифровую клавиатуру? Является ли это возможным?

Я экспериментирую с PhoneGap для разработки некоторых приложений для iPhone. PhoneGap в основном обертывает UIWebView – он работает хорошо. Проблема в том, что мое приложение имеет несколько полей ввода, которые принимают только числовой ввод. Мне действительно нужно заставить цифровую клавиатуру вместо того, чтобы принимать стандартную стандартную клавиатуру по умолчанию, а затем заставляет пользователя переключаться на числовое значение в каждом поле. Кто-нибудь знает возможно ли это? Как?

Уточнение: я знаю, что Apple в настоящее время не предоставляет API, чтобы это разрешить. Мне интересно, может ли создать пользовательский class, который унаследовал от UIWebView, или, может быть, создание пользовательской клавиатуры откроет некоторые возможности?

Обновление 6 ноября 2009 г. – Как уже упоминалось ниже, Apple недавно обновила функциональность Safari, так что это снова поддерживается. Поэтому принятый ответ был изменен, чтобы отразить это.

      

Похоже, что Mobile Safari поддерживает новые атрибуты типа ввода HTML5 по электронной почте , номеру , поиску , tel и url . Они будут переключать отображаемую клавиатуру. См. Атрибут type .

Так, например, вы можете сделать это:

  

И когда поле ввода имеет фокус, отображается цифровая клавиатура (как будто у пользователя была полная клавиатура и нажата кнопка «123».

Если вы действительно хотите только номера, вы можете указать:

  

А затем пользователь получит клавиатуру набора номера телефона.

Я знаю, что это работает с Mobile Safari – я предполагаю, что он будет работать с UIWebView.

Я нашел лучшее решение – использовать при разработке форм для мобильных и настольных браузеров.

Из документации Apple (примечание о UIWebView):

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

Проверено на IPhone OS 3.0, эта функциональность все еще не была, не знаю, почему Apple просто удалила эту удобную функциональность, действительно расстроилась для работы над этим прямо сейчас 🙁

Ниже приведен список всех типов, совместимых с iOS (4.0 и выше):

http://conecode.com/news/2011/12/mobile-safari-uiwebview-input-types/

Это было возможно на первой итерации iPhone OS – Safari предоставит числовые клавиатуры для создания полей с «zip» или «телефоном» в их именах, но это исчезло в iPhone OS 2.0.

PhoneGap не имеет функции API, чтобы переопределить это на данный момент. Возможно, это то, над чем они работают, это определенно отличная функция.

iOS Mobile Safari также поддерживает:

  

Вам нужно внести изменения в часть HTML вашего проекта Dashcode:

  1. В Dashcode откройте index.html в окне кода.
  2. На canvasе представления, над которым вы работаете, выберите поле ввода, которое вы хотите настроить для использования оптимизированной клавиатуры.
  3. Нажмите на index.html, чтобы дать ему фокус.
  4. Выберите edit> find в строке меню Dashcode.
  5. Введите в поле поиска точное имя, которое вы указали для управления текстовым полем. Поиск найдет элемент управления в файле index.html.
  6. Измените тип type="text" на type="number" .

Готово.

То, что вы также можете использовать для iOS phonegap на основе приложения:

 input type="number" pattern="[0-9]*" 

Это показано на изображении ниже. Прекрасно работает с iOS 8.2 и телефонной связью 3.5 и выше.

iOs имеет числовую клавиатуру UIKeyboardTypeNumbersAndPunctuation , но это нельзя вызывать из HTML ( https://developer.apple.com/library/ios/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/KeyboardManagement/KeyboardManagement.html )

так как на клавиатуре «tel» отсутствует пунктуация, вам нужно создать это самостоятельно. Так как доступны пользовательские клавиатуры ios8. Или, если вам просто нужна пунктуация, вы можете добавить кнопку ( как добавить кнопку «Готово» к клавиатуре numpad в iOS ) на цифровую клавиатуру, которая появляется, когда вы указываете свое поле ввода с type="number" pattern="[0-9]*" .

Для этого: код цели-c.

 -(void)keyboardWillHide:(NSNotification *)note { [self.donekeyBoardBtn removeFromSuperview]; [self.webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat: @"document.activeElement.blur()"]]; } - (void)keyboardWillShow:(NSNotification *)note { [UIView setAnimationsEnabled:NO]; // create custom button //UIKeyboardTypeNumberPadin //type="number" pattern="[0-9]*" UIButton *extryB= [UIButton buttonWithType:UIButtonTypeRoundedRect]; extryB.frame = CGRectMake(0, self.view.frame.size.height+150, 100, 50); extryB.backgroundColor = [UIColor colorWithRed:204.0f/255.0f green:210.0f/255.0f blue:217.0f/255.0f alpha:1.0f]; extryB.adjustsImageWhenHighlighted = NO; extryB.titleLabel.font = [UIFont systemFontOfSize:14.0]; [extryB setTitle:@"," forState:UIControlStateNormal]; [extryB setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; [extryB addTarget:self action:@selector(extryBpressed) forControlEvents:UIControlEventTouchUpInside]; self.donekeyBoardBtn = extryB; // locate keyboard view UIWindow* tempWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:1]; UIView* keyboard; for(int i=0; i<[tempWindow.subviews count]; i++) { keyboard = [tempWindow.subviews objectAtIndex:i]; // keyboard view found; add the custom button to it if([[keyboard description] hasPrefix:@" 

Затем вы должны добавить метод, к которому можно получить доступ в приложении в вашем JS-коде.

 simulateKeyPress: function(k) { var press = jQuery.Event("keypress"); press.which = k; // place the id of your most outer html tag here $("#body").trigger(press); // just needed because my active element has a child element where the value should be placed in var id = document.activeElement.id.indexOf("-"); if(id != -1){ var currentTf = sap.ui.getCore().byId(document.activeElement.id.split("-")[0]); //append the value and set it (my textfield has a method setValue()) var currentTfValue = currentTf.getValue(); currentTf.setValue(currentTfValue + k); } }, 
  • Как обрабатывать события с клавиатуры и мыши в полноэкранном эксклюзивном режиме в java?
  • Получение размеров мягкой клавиатуры
  • Как убрать клавиатуру для UITextView с ключом возврата?
  • Java KeyListener заикается
  • Текстовое поле скрыто под клавиатурой в веб-браузере Android
  • Отображать клавиатуру без анимации
  • Отображать мягкую клавиатуру iPhone, даже если подключена аппаратная клавиатура
  • Нажмите клавиши клавиатуры с помощью командного файла
  • Как получить ввод с клавиатуры в pygame?
  • Обнаружение текущего языка ввода iPhone
  • Получение ввода клавиатуры
  • Interesting Posts

    Отправка почтового вложения с помощью Java

    Высота веб-страницы jQuery

    Обнаружен цикл саморегуляции – Возврат данных из WebApi в браузер

    MySql: MyISAM против Inno DB!

    Предотrotation входа в систему Brute Force на веб-сайтах

    Приложение не удалось запустить, поскольку оно не могло найти или загрузить плагин платформы QT «windows»,

    Виртуальная машина (VirtualBox) – Как получить доступ к файлам с хостинга?

    Установщик с онлайн-регистрацией для приложения Windows

    Есть ли способ взломать пароль в проекте Excel VBA?

    Сериализация экземпляра classа для JSON

    Удалить пароль для ноутбука Toshiba?

    HttpURLConnection для отправки изображений, аудио и видео файлов с параметром может (String или Json String) Android

    Клонирование 2,5-дюймового жесткого диска для ноутбука и SDD на нескольких ноутбуках?

    Избегайте Windows 10 Creator, но не других обновлений

    Как удаленно открыть URL-адрес в Firefox в определенном профиле?

    Давайте будем гением компьютера.