Подтвердить что ты не робот

Можно показать клавиатуру без использования UITextField и UITextView iphone app?

Я работаю в приложении для обмена сообщениями на iPhone.

Я хочу показать клавиатуру с клавиатурой inputAccessoryView на клавиатуре без использования UITextView и UITextField. Это можно сделать? Пожалуйста, помогите мне в этом.

Спасибо заранее. С нетерпением ждем вашей помощи. Спасибо.

EDIT:

Потому что я не хочу, чтобы UITextField/UITextView и элемент управления находился в UITextView/UITextField. Я собираюсь добавить inputAccessoryView на клавиатуре UITextView. когда пользователь коснется UITextView на клавиатуре inputView, фактический процесс будет продолжен.

4b9b3361

Ответ 1

Для тех, кто хочет показать клавиатуру без UITextField/UITextView по некоторым причинам, может легко расширить некоторое представление, которое требует ввода текста, реализуя протокол UIKeyInput и canBecomeFirstResponder.

Ответ 2

Смотрите документацию для этого:

Простой ввод текста

Все, что вам нужно сделать, - это реализовать свое представление UIKeyInput и вызвать [inputView becomeFirstResponder] при касании. Ваше представление также должно реализовать canBecomeFirstResponder и вернуть YES.

Пример кода из документации iOS, которая делает это.

Ответ 3

Вы можете попробовать ответы на этих других сообщениях SO:

Вы также можете попробовать это:

UIKeyboard *keyboard = [[[UIKeyboard alloc] initWithFrame: CGRectMake(0.0f,          contentRect.size.height - 216.0f, contentRect.size.width, 216.0f)] autorelease];
[keyboard setReturnKeyEnabled:NO];
[keyboard setTapDelegate:editingTextView];
[inputView addSubview:keyboard];

Ответ 4

В симуляторе xcode:

Иногда клавиатура не отображается, потому что программная клавиатура выключена. Перейти к оборудованию → Клавиатура → Переключить клавиатуру 👌

Ответ 5

Я сделал небольшой файл утилиты, который может вызвать клавиатуру с текстовым полем при нажатии кнопки!

https://github.com/havocked/TZKeyboardPop

Ответ 6

Сделайте View, Label или что-либо еще, чтобы соответствовать UIKeyInput. В этом случае UIView

Подкласс UIView:

import UIKit

class KeyInputView: UIView {
   var _inputView: UIView?

   override var canBecomeFirstResponder: Bool { return true }
   override var canResignFirstResponder: Bool { return true }

   override var inputView: UIView? {
       set { _inputView = newValue }
       get { return _inputView }
   }
}

// MARK: - UIKeyInput
//Modify if need more functionality
extension KeyInputView: UIKeyInput {
    var hasText: Bool { return false }
    func insertText(_ text: String) {}
    func deleteBackward() {}
}

Настройте свой View, в этом случае с помощью средства выбора (в viewDidLoad или где-либо еще)

let languangePicker = UIPickerView()
languangePicker.dataSource = self
languangePicker.delegate = self
keyInputView.inputView = languangePicker

Показывать:

keyInputView.becomeFirstResponder()

Прятаться:

keyInputView.resignFirstResponder()

Установить данные выбора из источника данных (компилятор заставит вас это сделать)

Захватывать события выбора данных от делегата