Можно ли показывать клавиатуру без использования приложения UITextField и UITextView iphone?
Я работаю в приложении для обмена сообщениями на iPhone.
Я хочу показать клавиатуру с клавиатурой inputAccessoryView
в клавиатуре без использования UITextView
а также UITextField
, Это возможно сделать? Пожалуйста, помогите мне в этом.
Заранее спасибо. Ждем вашей помощи. Благодарю.
РЕДАКТИРОВАТЬ:
Потому что я не хочу UITextField
/UITextView
и контроль, чтобы быть в UITextView
/UITextField
, Я собираюсь добавить inputAccessoryView
на клавиатуре есть UITextView
, когда пользователь касается UITextview
в клавиатуре inputView
фактический процесс будет продолжен.
5 ответов
Для тех, кто хочет показать клавиатуру без UITextField
/UITextView
по некоторым причинам может легко расширить некоторые представления, которые требуют ввода текста путем реализации UIKeyInput
протокол и canBecomeFirstResponder
метод.
Смотрите документацию для этого здесь:
Все, что вам нужно сделать, это реализовать ваше представление UIKeyInput
и позвонить [inputView becomeFirstResponder]
когда вид коснулся. Ваше мнение также необходимо реализовать canBecomeFirstResponder
и верните ДА.
Сделайте View, Label или что-нибудь еще, чтобы соответствовать UIKeyInput. В этом случае UIView
Подкласс a 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() {}
}
Настройте представление, в данном случае с помощью средства выбора (в viewDidLoad или где-либо еще)
let languangePicker = UIPickerView()
languangePicker.dataSource = self
languangePicker.delegate = self
keyInputView.inputView = languangePicker
Показывать:
keyInputView.becomeFirstResponder()
Прятаться:
keyInputView.resignFirstResponder()
Установить данные средства выбора из источника данных (компилятор заставит вас это сделать)
Получение событий средства выбора данных от делегата
В симуляторе xcode:
Иногда клавиатура не отображается, потому что программная клавиатура выключена. Перейти к оборудованию -> Клавиатура -> Переключить клавиатуру
Вы можете попробовать свой ответ здесь:
использовать-в-систему-клавиатуру-без а-UITextView
клавиатура iphone без просмотра текста
И вы можете попробовать это тоже.
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];
Вот еще один вариант, если это может вам помочь.
Я сделал небольшой служебный файл, который может вызывать клавиатуру с текстовым полем одним нажатием кнопки!