На цифровой клавиатуре нет кнопки «Готово». Когда пользователь заканчивает ввод числовой информации в текстовое поле, как я могу заставить цифровую клавиатуру исчезнуть?
Я мог получить кнопку «Готово», используя клавиатуру по умолчанию, но тогда пользователям пришлось бы переключаться на цифровые клавиши для ввода цифр. Есть ли способ показать кнопку «Готово» на цифровой клавиатуре?
ios
iphone
user-input
Холодный чжун
источник
источник
Вот адаптация к ответу Люды для Swift:
В объявлении вашего подкласса UIViewController положите
во ViewDidLoad положить:
и добавить функции hoopla и hoopla (не стесняйтесь выбирать другие имена, просто измените имена селекторов в ViewDidLoad соответственно
источник
UIBarButtonItemStyle.Bordered
устарела с iOS 8.0.UIBarButtonItemStyle.Plain
предлагается вместоУловка, которую я использовал, заключается в том, чтобы сделать настраиваемую прозрачную кнопку размером всего представления, а затем в методе щелчка оставить текстовое поле в качестве первого респондента. Таким образом, пользователь может щелкнуть в любом месте за пределами поля, чтобы закрыть клавиатуру.
источник
Решение Swift 3 с использованием расширения. Идеально, если у вас есть несколько числовых
UITextField
объектов в вашем приложении, поскольку оно дает гибкость, чтобы решить для каждогоUITextField
, выполнять ли пользовательское действие, когда нажимается «Готово» или « Отмена» .Пример использования с использованием действий по умолчанию:
Пример использования пользовательского действия Done :
источник
Ниже приведен пересмотр ответа Люды со следующими изменениями:
вспомогательный вид автоматически изменяется по ширине рамки приложения
устарелая постоянная
UIBarButtonItemStyleBordered
исключаетсякнопка «Готово» создается как
UIBarButtonSystemItemDone
В настоящее время кнопка «Готово» находится по центру в дополнительном представлении. Вы можете расположить его слева или справа, удалив пространство на соответствующей стороне.
Я пропустил кнопку «Отмена», потому что на клавиатуре по умолчанию ее тоже нет. Если вам нужна кнопка «Отмена», я предлагаю вам создать ее как кнопку
UIBarButtonSystemItemCancel
и убедиться, что вы не сбрасываете исходное значение в текстовом поле. Поведение «Отмена», реализованное в ответе Люды, который перезаписывает значение пустой строкой, может не соответствовать вашему желанию.Для получения дополнительной информации о создании дополнительных представлений см. Документацию Apple о пользовательских представлениях для ввода данных . Возможно, вы захотите обратиться к справочным страницам на UIToolbar и UIBarButtonItem .
источник
[UIScreen mainScreen].applicationFrame
устарела в iOS 9. Использование[UIScreen mainScreen].bounds
Решение в UIKeyboardTypeNumberPad и отсутствующий ключ возврата работает отлично, но только если на экране нет других текстовых полей без цифровой клавиатуры.
Я взял этот код и превратил его в UIViewController, который можно просто сделать подклассом, чтобы заставить работать цифровые клавиатуры. Вам нужно будет получить значки по ссылке выше.
NumberPadViewController.h:
и NumberPadViewController.m:
Наслаждаться.
источник
Вот самый последний код. Просто включите #import "UIViewController + NumPadReturn.h" в свой viewController.
Вот это .h
И им
источник
Гораздо более простое решение
источник
Если у вас есть несколько числовых полей, я предлагаю создать подкласс UITextField, чтобы создать NumericTextField, который всегда отображает цифровую клавиатуру с кнопкой «Готово». Затем просто свяжите ваши числовые поля с этим классом в Интерфейсном Разработчике, и вам не понадобится дополнительный код ни в одном из ваших контроллеров представления. Ниже приведен класс Swift 3.0, который я использую в Xcode 8.0.
Swift 4.2
источник
Я нашел ответ @ user1258240 довольно кратким, учитывая, что это не так просто, как установка
returnKeyType
свойство.Просто хотел внести свой собственный подход «многоразового использования» к этому:
источник
SWIFT 3.0 Другой вариант, используя части некоторых предыдущих ответов.
источник
Я опишу одно решение для iOS 4.2+ здесь , но распускать кнопку исчезает в после появляется клавиатура. Это не страшно, но и не идеально.
Решение, описанное в вопросе, связанном выше, включает в себя более изящную иллюзию отклонения кнопки, когда я замираю и вертикально смещаю кнопку, чтобы создать впечатление, что клавиатура и кнопка сбрасываются вместе.
источник
Самый простой способ:
создать пользовательскую прозрачную кнопку и поместить ее в левый нижний угол, который будет иметь такое же
CGSize
пространство, как и вUIKeyboardTypeNumberPad
. Переключить (показать / скрыть) эту кнопку на textFieldbecomeFirstResponder
, при нажатии кнопки соответственно.источник
Вот самое простое решение, с которым я столкнулся. Я узнал об этом из книги «Начало разработки под iOS 5».
Предполагается, что числовое поле называется
numberField
.В
ViewController
добавьте следующий метод:В
ViewController.m
добавьте следующий код:Вернуться к
nib
файлу.Utilities
кастрюлю.Identity inspector
подUtilities
сковородой.View
(в файле пера) один раз. Убедитесь, что вы не нажали ни на один из элементов в представлении. Для пояснения, вы должны увидеть UIView подClass
вIdentity inspector
.Connection Inspector
.Touch Down
стрелку наFile Owner
иконку. (FYI ... Значок владельца файла отображается слеваView
и отображается как полый куб с желтой рамкой.)closeKeyboard
.Теперь, когда вы щелкнете где-нибудь на фоне
View
, вы сможете убрать клавиатуру.Надеюсь, это поможет вам решить вашу проблему. :-)
источник
Я изменил решение Брайана, чтобы оно было немного более надежным, чтобы оно хорошо сочеталось с другими типами клавиатур, которые могут отображаться в том же виде. Это описано здесь:
Создать кнопку Готово на iOS Numpad UIKeyboard
Я бы попытался объяснить это здесь, но большая часть кода представляет собой код, который не очень легко уместится здесь.
источник
Если вы заранее знаете количество вводимых чисел (например, 4-значный PIN-код), вы можете автоматически отклонить его после 4 нажатий клавиш, как указано в моем ответе на аналогичный вопрос:
распуская цифровую клавиатуру
В этом случае нет необходимости в дополнительной кнопке «Готово».
источник
Мы также можем сделать решение «пользователь потрогал куда-то еще» еще проще, если мы просто скажем представлению нашего контроллера представления закончить редактирование:
... предполагая, что "прикосновение к чему-то другому приводит к отклонению клавиатуры" - желаемое поведение для любых других редактируемых полей в представлении.
источник
Для Swift 2.2 я использую это
источник
Вся эта реализация, связанная с поиском вида с клавиатуры и добавлением кнопки «Готово» в 3-й строке (вот почему высота кнопки button.y = 163 b / c равна 216), хрупка, потому что iOS продолжает изменять иерархию представлений. Например, ни один из приведенных выше кодов не работает для iOS9.
Я думаю, что более безопасно просто найти самый верхний вид с помощью [[[UIApplication sharedApplication] windows] lastObject] и просто добавить кнопку в левом нижнем углу, doneButton.frame = CGRectMake (0, SCREEN_HEIGHT-53, 106 , 53); // портретный режим
источник
Swift 2.2 / Я использовал ответ Dx_. Тем не менее, я хотел эту функциональность на всех клавиатурах. Итак, в моем базовом классе я положил код:
Затем просто вызовите addDoneButtonForTextFields для self.view.subviews в viewDidLoad (или willDisplayCell, если используется табличное представление), чтобы добавить кнопку «Готово» на все клавиатуры.
источник