Я искал повсюду для этого, но я не могу найти это. Я знаю, как отклонить использование клавиатуры, Objective-C
но я не знаю, как это сделать, используя Swift
? Кто-нибудь знает?
ios
swift
uikeyboard
лагуна
источник
источник
Ответы:
Вот еще один способ сделать эту задачу, если вы собираетесь использовать эту функцию в нескольких
UIViewControllers
:Теперь в каждом
UIViewController
, все, что вам нужно сделать, это вызвать эту функцию:Эта функция входит в стандартную функцию моего репо, которая содержит множество полезных расширений Swift, таких как этот, зацените: https://github.com/goktugyil/EZSwiftExtensions
источник
didSelectRowAtIndexPath
.tap.cancelsTouchesInView = false
. Это решило это по крайней мере для меня. Надеюсь, это кому-нибудь поможетОтвет на ваш вопрос о том, как отключить клавиатуру в Xcode 6.1 с помощью Swift ниже:
( Источник этой информации ).
источник
Swift 4 работает
Создайте расширение, как показано ниже, и вызовите его
hideKeyboardWhenTappedAround()
в вашем контроллере базового представления.Наиболее важная вещь для вызова в вашем контроллере базового представления, так что нет необходимости вызывать все время во всех контроллерах представления.
источник
Вы можете позвонить
на любом экземпляре UIResponder, таком как UITextField. Если вы вызываете его в представлении, которое в настоящее время вызывает отображение клавиатуры, клавиатура будет отклонена.
источник
источник
для Swift 3 это очень просто
если вы хотите скрыть клавиатуру при нажатии клавиши RETURN
но во втором случае вам также нужно будет передать делегат из всех textFields в ViewController в Main.Storyboard
источник
unrecognized selector sent to instance
с этим кодом.Swift 3: самый простой способ отклонить клавиатуру:
источник
Даш ответ правильный и предпочтительный. Более «выжженная земля» - это колл
view.endEditing(true)
. Это вызываетview
и все его представленияresignFirstResponder
. Если у вас нет ссылки на представление, которое вы хотели бы отклонить, это хакерское, но эффективное решение.источник
swift 5 достаточно двух строк Добавьте в свою
viewDidLoad
работу.Если ваш жест касания заблокировал некоторые другие касания, добавьте эту строку:
источник
В раскадровке:
источник
Свифт 3:
Расширение в
Selector
качестве параметра, чтобы иметь возможность выполнять дополнительные действия в функции dismiss иcancelsTouchesInView
предотвращать искажения при касании других элементов представления.Применение:
источник
Используйте IQKeyboardmanager , который поможет вам легко решить .....
/////////////////////////////////////////
! [как отключить клавиатуру ..] [1]
источник
Я нашел лучшее решение, включающее принятый ответ от @Esqarrouth, с некоторыми корректировками:
Линия
tap.cancelsTouchesInView = false
была критической: она гарантирует, чтоUITapGestureRecognizer
другие элементы не будут препятствовать взаимодействию с пользователем.Метод
dismissKeyboard()
был изменен на чуть менее элегантныйdismissKeyboardView()
. Это потому, что в довольно старой кодовой базе моего проекта было много раз, когдаdismissKeyboard()
он уже использовался (я думаю, что это не редкость), вызывая проблемы компилятора.Затем, как указано выше, это поведение можно включить в отдельных контроллерах представления:
источник
Если вы используете представление прокрутки, это может быть намного проще.
Просто выберите
Dismiss interactively
в раскадровке.источник
В Swift 4 добавьте @objc:
В viewDidLoad:
Функция:
источник
Добавьте это расширение к вашему ViewController:
источник
Чтобы расширить ответ Эскарута , я всегда использую следующее, чтобы отклонить клавиатуру, особенно если класс, из которого я отклоняю клавиатуру , не имеет
view
свойства и / или не является подклассомUIView
.И, для удобства, следующее расширение
UIApplcation
класса:источник
источник
Как начинающий программист, это может сбивать с толку, когда люди производят более квалифицированные и ненужные ответы ... Вам не нужно делать никаких сложных вещей, показанных выше! ...
Вот самый простой вариант ... В случае, если ваша клавиатура появляется в ответ на текстовое поле - внутри вашей функции сенсорного экрана просто добавьте функцию resignFirstResponder . Как показано ниже - клавиатура закроется, потому что Первый Ответчик освобожден (выход из цепочки Ответчика) ...
источник
Я использую IQKeyBoardManagerSwift для клавиатуры. Это простой в использовании. просто добавьте модуль 'IQKeyboardManagerSwift'
Импортируйте IQKeyboardManagerSwift и напишите код
didFinishLaunchingWithOptions
вAppDelegate
.источник
Этот один вкладыш отказывается от клавиатуры от всех (любых) UITextField в UIView
источник
Всего одна строка кода в
viewDidLoad()
методе:источник
В Swift вы можете использовать
источник
Для Swift3
Зарегистрируйте распознаватель событий в viewDidLoad
тогда нам нужно добавить жест в представление в том же viewDidLoad.
Затем нам нужно инициализировать зарегистрированный метод
источник
Публикация в качестве нового ответа, так как мое редактирование ответа @ King-Wizard было отклонено.
Сделайте ваш класс делегатом UITextField и переопределите touchSegan.
Swift 4
источник
Вы также можете добавить распознаватель жестов касания, чтобы оставить клавиатуру. : D
источник
Другая возможность - просто добавить большую кнопку без содержимого, которое находится под всеми представлениями, к которым вам, возможно, нужно прикоснуться. Дайте ему действие с именем:
Проблема с распознавателем жестов была для меня в том, что он также улавливал все касания, которые я хотел получить с помощью tableViewCells.
источник
Если у вас есть другие виды, которые должны получить сенсорный, вы должны установить
cancelsTouchesInView = false
Нравится:
источник
Попробуйте это, это работает
источник
Когда в представлении есть более одного текстового поля
Для того, чтобы следовать @ рекомендации modocache - х избежать вызова
view.endEditing()
, вы можете отслеживать текстовое поле, которое стало первым респондентом, но это грязно и подвержено ошибкам.Альтернативой является вызов
resignFirstResponder()
всех текстовых полей в viewcontroller . Вот пример создания коллекции всех текстовых полей (которые в любом случае были необходимы для кода проверки в любом случае):Имея доступную коллекцию, вы легко можете пройтись по всем из них:
Так что теперь вы можете вызвать
dismissKeyboard()
свой распознаватель жестов (или там, где вам удобно). Недостатком является то, что вы должны поддерживать списокUITextField
s при добавлении или удалении полей.Комментарии приветствуются. Если есть проблема с вызовом
resignFirstResponder()
элементов управления, которые не являются первыми респондентами, или если есть простой и гарантированный не ошибочный способ отследить текущего первого респондента, я хотел бы услышать об этом!источник