Отключить клавиатуру с жестом салфетки

В Messages.app вы можете отключить клавиатуру, прокрутив список. Чтобы быть ясным, это не просто ответ на событие scrollViewDidScroll. При прокрутке вниз клавиатура треки пальцем. Любая идея, как это делается?

Ответы

Ответ 1

С iOS 7 вы можете использовать

scrollView.keyboardDismissMode = .Interactive

Из документации:

UIScrollViewKeyboardDismissModeInteractive

Клавиатура следует за перетаскивая сенсорный экран, и его можно снова открыть вверх, чтобы отменить увольте.

Ответ 2

В XCode, инспекторе атрибутов, scrollView имеет атрибут Keyboard. Он имеет 3 варианта.

  • Не отклоняй
  • Отклонение при перетаскивании
  • Отключите интерактивный интерфейс.

UIScrollView properties

Ответ 3

Так как iOS7, UIScroll​View и все наследуемые от него классы (включая UITableView) имеют свойство keyboard​Dismiss​Mode. keyboard​Dismiss​Mode имеет следующее объявление:

var keyboardDismissMode: UIScrollViewKeyboardDismissMode { get set }

Способ, которым клавиатура отклоняется, когда в представлении прокрутки начинается перетаскивание.

Обратите внимание, что UIScrollViewKeyboardDismissMode является перечислением, которое имеет случаи none, interactive и onDrag.


# 1. Установите программный код UIScrollViewKeyboardDismissMode

Ниже приведенный ниже фрагмент кода Swift 3 показывает возможную реализацию keyboardDismissMode:

override func viewDidLoad() {
    super.viewDidLoad()

    // Dismiss keyboard when scrolling the tableView
    tableView.keyboardDismissMode = UIScrollViewKeyboardDismissMode.interactive

    /* ... */
}

# 2. Установите UIScrollViewKeyboardDismissMode в раскадровке

В качестве альтернативы программному подходу выше вы можете установить значение UIScrollViewKeyboardDismissMode для UIScrollView в раскадровке.

  • Выберите экземпляр UIScrollView/UITableView,
  • Выберите Инспектор атрибутов,
  • Задайте правильное значение для клавиатуры.

введите описание изображения здесь

Ответ 4

Если вы используете tableView и Swift 3 или Swift 4, он работает с помощью:

tableView.keyboardDismissMode = .onDrag