Как быстро скрыть клавиатуру на iPhone или iPad. Твик DismissMyKeyboard из Cydia
Джейлбрейк устройств на iOS не сдает свои позиции и все так же популярен, ведь он открывает широкие возможности в кастомизации iOS. Доступ к файловой системе мобильной операционной системы Apple позволяет пользователям обойти существующие ограничения и открыть новый функционал вашего девайса. Именно благодаря актуальности джейла, разработчики продолжают писать новые твики под iOS. Примером тому новый твик из Cydia — DismissMyKeyboard. Как быстро скрыть клавиатуру на iPhone или iPad – об этом сегодняшний пост.

Практически все современные гаджеты предлагают нам огромные возможности для работы с текстовыми документами и непосредственно с текстом в целом. «Яблочные» аппараты обладают достаточно удобной и функциональной экранной клавиатурой, однако ее использование можно сделать еще более приятным благодаря твику DismissMyKeyboard. Установка этого твика поможет вам быстро скрыть клавиатуру, ведь иногда она немного мешает обзору и закрывает необходимую нам часть экрана. Программа была разработана неким iAmharic. Давайте разберемся в ее действии подробнее.
Установив данный твик, вы получаете возможность скрыть экранную клавиатуру одним жестом. Для этого вам необходимо провести пальцем по кнопке ПРОБЕЛ (SPACE) слева направо и клавиатура моментально пропадет. Если вы захотите вернуть ее на экран – просто сделайте тап по строке ввода и она появится снова на рабочем пространстве дисплея.
Программа DismissMyKeyboard не требует никаких дополнительных настроек, появление новых разделов и иконок в iOS также не предусмотрено. Твик стал доступен для скачивания уже на прошлой неделе причем на бесплатной основе из репозитория BigBoss в Cydia.
Как вы поняли, для установки твика DismissMyKeyboard вы должны выполнить джейлбрейк вашего iOS-устройства. На данный момент непривязанный джейлбрейк существует лишь для iOS 5.1.1. iOS 6 пока можно взломать лишь в привязанном режиме и то на устройствах, работающих под управлением процессора A4. Джейлбрейка для новых продуктов Apple (iPhone 5, iPad mini, iPad 4) на данный момент не существует, поэтому пока установить твик DismissMyKeyboard у владельцев данных гаджетов не выйдет.
Как опустить вниз клавиатуру на айфоне?

Мешает полоса (пустое бесполезное пространство) между клавиатурой и низом экрана. Как ее убрать? Как опустить вниз?
- Вопрос задан более года назад
- 2833 просмотра
5 комментариев
Простой 5 комментариев
че? где? фото в студию
Hwangw @Hwangw Автор вопроса

Drno,
Hwangw, переключись на стандартную клавиатуру
Hwangw @Hwangw Автор вопроса
Drno, на стандартной почти так же, но еще два значка. Мне надо ее именно «прижать» к низу экрана
Hwangw, так нарисована клавиатура. нижняя часть экрана используется у айфона. так что скорее всего никак
Решения вопроса 0
Ответы на вопрос 2
Никак, это зона safeArea, там располагается системный элемент + свайпы.
Ответ написан более года назад
Комментировать
Нравится Комментировать
Вернувшийся кодер недоучка
Программно можно, но тогда могут быть заблокированы нижние ряды клавиатуры. Araya верно сказал, что это safeArea. Присутствует на всех iPhone с «челкой». Попробуйте открыть это приложение на ранних моделях и если верстка сделана верно то, например, на iPhone 8 клавиатура будет прикреплена книзу экрана.
Ответ написан более года назад
Комментировать
Нравится Комментировать
Ваш ответ на вопрос
Войдите, чтобы написать ответ

- iOS
Нужен ли аккаунт разработчика Apple чтобы устанавливать свою программу на свое устройство?
- 2 подписчика
- 13 янв.
- 366 просмотров
Обучающий курс по разработке iOS+Swift приложений.
Русский неавторизованный конспект лекций Стэнфордского университета » Разработка iOS приложений» 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 и 2023 гг., сопровождаемый решениями заданий и дополнениями, связанными с адаптацией курсов к новым версиям Swift, Objective-C и iOS.

Дополнение к Лекции 8: как скрыть клавиатуру после ввода текста.
Опубликовано 3 мая, 2015 автором tatiana.kornilova@gmail.com
Если вам нужен ввод текста в Swift приложении, то вы помещаете текстовое поле Text Field на пользовательский интерфейс. Когда пользователь кликнет на этом поле, появится клавиатура из нижней части экрана, позволяя пользователю начать набор текста. Многие думают, что клавиатура должна «скрыться», когда пользователь закончит печатать. Хотя это, конечно, правильно, но это не единственная причина «скрыть» клавиатуру. Более правильно думать о том, что клавиатура должна «скрыться», когда пользователь перестал взаимодействовать с ней. Например, когда он «тапнет» (tap) на кнопке, коснется чего-то на экране за пределами текстового поля или будет скроллить Table View. Таких ситуаций много, поэтому указание клавиатуре — «скрыться», отдано в iOS на откуп разработчику.
Распространенной ошибкой многих начинающих iOS программистов является незнание того, что этап «скрытия» клавиатуры не встроен в логику работу с текстовым полем Text Field. Если вы кликните на текстовом поле Text Field, а затем попытаетесь кликнуть где-нибудь еще…. то ничего не происходит: клавиатура остается на экране и блокирует весь пользовательский интерфейс. В этом посте мы постараемся это исправить.
Мы узнаем как и где «скрыть» клавиатуру в iOS 8, используя Swift.
Проводить испытание будем на простейшем приложении, код которого находится на Github и которое по существу имеет два файла ViewController.swift и Main.storyboard. На storyboard расположено текстовое поле и кнопка «Button«.
Запускаем приложение, набираем текст и кликаем за пределами текстового поля в трех указанных местах — клавиатура не скрывается.
Сначала выяснил КАК можно скрыть клавиатуру.
Это можно поправить разными способами, но идея заключается в том, чтобы прекратить редактирование в текстовом поле, тогда курсор «уйдет» с текстового поля и клавиатура «скроется».
Для любого элемента пользовательского интерфейса, который является экземпляром класса UIResponder , в том числе и для текстового поля UITextField , можно вызвать метод
resignFirstResponder()
и появившаяся после взаимодействия с этим элементом клавиатура исчезнет.
Можно было бы написать
textField.resignFirstResponder()
но на storyboard может быть несколько текстовых полей, и не хотелось бы работать с каждым текстовым полем индивидуально, то есть создавать outlet для каждого текстового поля и повторять вышеуказанную строку столько раз, сколько у вас текстовых полей. В этом ключе существуют два других альтернативных подхода.
Подход 1: использование метода endEditing для UIView
Предполагая, что ваше текстовое поле является subview вашего топового view , вы можете вставить строку кода
view.endEditing(true)
Мы здесь не используем textField. resignFirstResponder() . Почему? Потому что хотя textField. resignFirstResponder() работал бы прекрасно для нашего приложения, вариант множества текстовых полей textField потребовал бы множества вызовов textField. resignFirstResponder() , для каждого поля отдельно. При использовании view.endEditing(true) нам понадобится только одна строка кода, которая не включает названия специфических текстовых полей и необходимость иметь их outlets.
Еще одним преимуществом этого подхода является то, что вы можете использовать возвращаемое значение метода , чтобы узнать, «скрылась» клавиатура или нет.
Ключевая проблема здесь — это необходимость иметь ссылку на view , так что вы можете использовать этот подход только из View Controller. На практике это и есть наиболее распространенный случай.
Куда поместить эту строку кода? Об этом — чуть позже.
Подход 2: использование цепочки ответчиков (Responder Chain)
UIApplication.sharedApplication().sendAction(«resignFirstResponder», to:nil,from:nil,forEvent:nil)
Этот код будет скрывать вашу клавиатуру без указания кому посылается сообщение resignFirstResponder . Это самый независимый способ скрыть клавиатуру — так называемый nil-targeted Action подход, использующий экземпляр класса UIApplication , который работает повсюду. Этот подход также предполагает одну строку кода и никаких outlets для текстовых полей.
Куда поместить эту строку кода? Об этом — в следующем разделе.
Куда помещать код?
Из двух приведенных выше строк кода воспользуемся наиболее распространенной строкой кода view.endEditing(true) и рассмотрим КУДА разместить код в зависимости от разных ситуаций потери взаимодействия с текстовым полем.
1. В Action методе кнопки.
Если вы хотите, чтобы клавиатура скрывать только при нажатии на кнопку, а при возвращении в текстовое поле опять появлялась и позволяла продолжать редактирование — помещайте в Action метод
Если вы кликните на текстовом поле, то клавиатура появляется.
Если вы кликните на кнопке, то клавиатура исчезает.
Если вы опять переместите курсор на текстовое поле, то клавиатура вновь появится, позволяя вам продолжить редактирование. Именно этот случай должен работать в демонстрационном примере «Autolayout» в Лекции 8 при нажатии кнопки «Login«. Вы можете этим и ограничиться. Но для полноты картины я продолжу изложение. Код находится на Github.
2. Переопределение метода View Controller
touchesBegan(touches: Set,withEvent event: UIEvent)
Если вы хотите, чтобы клавиатура «скрывалась» при любом клике за пределами текстового поля (dismiss keyboard), но не на элементах UI, то в соответствующем View Controller нужно переопределись метод
touchesBegan(touches: Set,withEvent event: UIEvent)

и поместить туда одну строку для «скрытия» клавиатуры следующим образом:
Запустите приложение и убедитесь, что клики за пределами текстового поля приводят к «скрытию» клавиатуры. Если вы опять переместите курсор в текстовое поле, то клавиатура появится вновь, то есть похоже на ситуацию с кнопкой. Заметьте, что в методе используется «родной» для Swift тип данных Set , который работает с версией Swift 1.2 и выше.
Однако этот код не будет работать, если у вас есть Scroll View (примером которого является рассматриваемая в Лекции 9 UITableView). Потому что Scroll View находится внутри вашего топового view , и он первым получит события touches (прикосновения пальцев), которые по умолчанию не будут передавать вашему view . В этом случае вам нужно использовать «распознаватель жестов» ( gesture recognizer), и в обработчике «распознавателя жестов» вызвать один из приведенных в начале поста методов для «скрытия» клавиатуры, например, можно использовать строку кода view.endEditing(true)

Способ с «распознавателем жеста» tap на вашем view для обычного View Controller (без Scroll View) является точным аналогом способа с touchesBegan(touches: Set,withEvent event: UIEvent) , но его действие распространяется на Scroll View.
В нашем примере схематично показано добавление «распознаватель жеста» tap в методе viewDidLoad , что очень не эффективно. Желательно добавлять «распознаватель жеста» tap только в случае, если клавиатура появилась на экране, и соответственно убирать его после того, как клавиатура скрылась. Этот способ изложен ниже.
3. Использование метода textFieldShoudReturn делегата UITextFieldDelegate
Если вы после редактирования текстового поля нажмете на клавиатуре клавишу «Return«, то клавиатура не «скроется», как это следовало бы ожидать по логике вещей. Для того, чтобы это произошло, нужно использовать делегата UITextFieldDelegate текстового поля и его метод textFieldShoulReturn .
1. Создаем outlet для нашего текстового поля с именем textField
2. Подтверждаем протокол делегирования UITextFieldDelegate
3. Делаем наш View Controller делегатом протокола UITextFieldDelegate
4. Переопределяем метод textFieldShoudReturn , явно ссылаемся на наше текстовое поле и используем метод resignFirstResponser , указанный в начале этого поста.
Вместо того, чтобы назначать себя делегатом textField.delegate = self в viewDidLoad , вы можете конфигурировать это в Инспекторе Связей (Connection Inspector).
Добавим на наш пользовательский интерфейс еще одно текстовое поле textField2 , создадим outlet (пункт 1), выполним назначение делегата на storyboard (пункт 2)
и добавим строку в метод textFieldShoudReturn (пункт4).
В результате получаем следующий код
Чтобы задействовать клавишу Return на клавиатуре для скрытия клавиатуры, нужно для каждого текстового поля создать outlet, привязать его делегата к View Controller и задействовать метод делегата textFieldShoudReturn .
4. Эффективное добавление «распознаватель жеста» tap для скрытия клавиатуры в Scroll View
Для того, чтобы добавлять «распознаватель жеста» tap только в случае, если клавиатура появилась на экране, и соответственно убирать его после того, как клавиатура скрылась, можно использовать механизм уведомлений (похоже на «радиостанцию»), который позволяет узнать, когда клавиатура появилась на экране, а когда скрылась. Поэтому подписываемся на эти события (мы будем постоянно слушать эти «радиостанции» ) в методе «жизненного цикла» viewDidAppear , то есть когда наш view уже появился на экране.
Мы просим сформированный по умолчанию центр уведомлений NSNotificationCenter.defaultCenter() дать знать нашему классу, если клавиатура появилась на экране («радиостанция» UIKeyboardWillShowNotification ), или если она «скрылась» ( «радиостанция» UIKeyboardWillHideNotification ). Если произойдет одно из этих двух событий, то центр уведомлений автоматически вызовет наши функции (которые мы еще не написали): keyboardWillShow: и keyboardWillHide:
Функции keyboardWillShow необходимо создать и добавить «распознаватель жестов» (если он уже не существует, что не должно произойти, но в любом случае надо быть внимательным) к топовому view . «Распознаватель жестов» распознает жест tap на нашем топовом view и обрабатывает его уже знакомой нам функцией dismissKeyboard
При применении «распознаватель жестов» для Scroll View вам придется установить свойство cancelsTouchesInView жеста в false , чтобы он передал событие touch другим views (например, ячейке Table View. По умолчанию он установлен true , что означает, что событие touch будет уничтожено и дальше передаваться не будет.
Клавиатура будет «скрываться», если пользователь один раз «тапнет» в области, расположенной над клавиатурой. Но мы не хотим, чтобы этот код вызывался, когда клавиатуры нет на экране. Конечно, это не приведет к аварийному завершению приложения, но зачем нам куча кода, в котором нет необходимости? Давайте уберем «распознаватель жестов» в методе keyboardWillHide , как только клавиатура «скрылась»:
Центр уведомлений — затратный ресурс, поэтому как только наш View Controller «ушел» с экрана, мы должны убрать все «радиостанции»
Вернемся к нашему экспериментальному приложению.
Я добавила еще один Second View Controller, на котором размещено только единственное текстовое поле
и вставила только код для «скрытия» клавиатуры с помощью «распознавателя жеста» tap . Достичь Second View Controller в приложении можно с помощью кнопки «Second View Controller» на основном View Controller.
Код находится на Github.
Аналогичная методика для Table View представлена в Github.
Методика «скрытия» клавиатуры в случае Scroll View для работы со storyboard и в коде изложена в
Дополнение к Лекции 8: как скрыть клавиатуру после ввода текста. : 4 комментария
Александр говорит 9 ноября, 2015 в 12:53 пп :
на swift 2.1 примеры по кнопке Return и по нажатию в любую область экрана для скрытия клавиатуры не работают.
Как отключить или включить клавиатуру QuickPath на iPhone и iPad

Если и было что-то, что я ненавидел в iOS, так это отсутствие встроенной поддержки набора текста смахиванием. Конкурирующие клавиатуры, такие как Gboard и SwiftKey, уже много лет предлагают такую функциональность. Было нелепо тратить огромное количество времени на ввод длинных слов на стандартной клавиатуре.
Оглавление

Шаг 2: Коснитесь Клавиатура. На следующем экране используйте переключатель рядом с Slide to Type, чтобы включить или отключить QuickPath.

При включенном переключателе Slide to Type вы также можете использовать переключатель рядом с Delete Undoes Slide, чтобы определить, удаляется ли возврат всего введенного слова QuickPath или нет.
Включить или отключить клавиатуру QuickPath на iPad
Как и на iPhone, включение или отключение QuickPath на iPad требует выполнения одного и того же набора шагов. Но поскольку этот функционал работает только на «плавающей» клавиатуре, опция включения и выключения сформулирована немного по-другому.
Шаг 1: Откройте приложение «Настройки» на iPad.

Шаг 2: Нажмите «Основные», а затем нажмите «Клавиатура».

Шаг 3: Либо включите переключатель рядом с «Сдвиньте плавающую клавиатуру для ввода», чтобы включить QuickPath, либо выключите его, чтобы отключить эту функцию.
Связанный : Коды активации Free Fire Max на 18 апреля 2022 года: получите ящик с добычей подрывника!

Используйте переключатель рядом с пунктом «Удалить отмену слайда», чтобы включить или отключить удаление входных данных QuickPath при перемещении назад.
QuickPath не работает? Устранение неполадок
Если вы хотели включить QuickPath, возможно, вы не можете заставить его работать на вашем iPhone или iPad (или, возможно, вы обнаружили, что параметр для его включения отсутствует). Итак, вот несколько советов, которые вы можете использовать для устранения неполадок и решения проблемы.
Обновите свое устройство
Убедитесь, что на вашем устройстве установлена iOS 13 или iPadOS. В противном случае вы не найдете возможность включить QuickPath на экране клавиатуры. Чтобы убедиться, что на вашем устройстве работает iOS 13 или iPadOS, коснитесь параметра «О программе» после посещения «Общих настроек».
Независимо от того, используете ли вы iPhone или iPad, номер рядом с версией программного обеспечения должен выглядеть как «13.0» или выше.

На момент написания статьи Apple все еще тестировала бета-версии iOS 13 и iPadOS. Поэтому, если вы хотите опробовать эти сборки, вам придется зарегистрироваться в общедоступной бета-программе.
Когда стабильные сборки для iOS 13 и iPadOS будут выпущены для широкой публики (ETA, сентябрь 2019 г.), нажмите «Обновление ПО» в разделе «Общие настройки», чтобы установить обновление.
Включить «плавающую» клавиатуру (iPadOS)
В iPadOS функция QuickPath не будет работать, если у вас не активирована «плавающая» клавиатура. Для этого нажмите на полноразмерную клавиатуру, чтобы войти в «плавающий» режим. Затем вы можете начать проводить пальцем по клавиатуре, чтобы вставлять слова.

Наконечник:
Мне бы очень хотелось, чтобы QuickPath работал на полноразмерной клавиатуре. Мы надеемся, что Apple добавит поддержку для этого когда-нибудь в будущем.
Используйте стандартную клавиатуру
На вашем iPhone или iPad установлены сторонние клавиатуры? Если вы не можете заставить QuickPath работать, не игнорируйте тот факт, что вы можете использовать другую клавиатуру вместо стандартной клавиатуры. Ведь они очень похожи, не так ли? Используйте значок глобуса, чтобы убедиться, что вы находитесь на стандартной клавиатуре.

Также может быть хорошей идеей отключить сторонние клавиатуры, чтобы они не мешали основным функциям стандартной клавиатуры. Вы можете сделать это, выбрав «Настройки»> «Основные»> «Клавиатура»> «Клавиатуры». В появившемся списке проведите пальцем по сторонним клавиатурам влево, а затем нажмите «Удалить», чтобы удалить их.
Нравится или нет?
Я считаю QuickPath жизненно важным дополнением, особенно потому, что мне не нравится использовать сторонние клавиатуры с набором текста смахиванием из соображений конфиденциальности. Например, Gboard печально известен сбором личных данных. Но, тем не менее, отключение QuickPath вполне понятно, особенно если вы ненавидите случайный ввод смахивания. К счастью, его легко включить или выключить, хотя я был бы не против не использовать для этого приложение «Настройки».
Связанный : Как перемещать файлы между Google Диском, OneDrive и Dropbox с помощью MoveBot.io
Итак, что вы думаете об этой функции? Планируете ли вы оставить его или вообще избавиться от него? Оставьте комментарий ниже.
Следующий: Несмотря на наличие функции набора текста смахиванием, на стандартной клавиатуре iOS по-прежнему отсутствует выделенный цифровой ряд. Вот пять сторонних клавиатур с цифрами сверху, которые вы должны проверить.