I am working in iPhone messaging based app.
I want to show keyboard with keyboard inputAccessoryView
in keyboard without using UITextView
and
See the documentation for doing that here:
Simple Text Input
All you need to do is have your view implement UIKeyInput
and call [inputView becomeFirstResponder]
when the view is touched. Your view also needs to implement canBecomeFirstResponder
and return YES.
Sample code from the iOS documentation which does this.
Make a View, Label or what ever to conform to UIKeyInput. In this case a UIView
Sub class 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() {}
}
Setup your View, in this case with a picker (in viewDidLoad or where ever)
let languangePicker = UIPickerView()
languangePicker.dataSource = self
languangePicker.delegate = self
keyInputView.inputView = languangePicker
To show:
keyInputView.becomeFirstResponder()
To hide:
keyInputView.resignFirstResponder()
Set picker data, from datasource (compiler force u to do it)
Grab data picker events from delegate
You can try the answers on these other SO posts:
Use the system keyboard without a UITextView or UITextField
iphone keyboard without textview
You can also try this:
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];
Sometimes the keyboard wont show because the software keyboard is off. Go to hardware -> Keyboard -> toggle keyboard
I have made a small utility file that can call a Keyboard with a textfield on a button touch !
https://github.com/havocked/TZKeyboardPop
For anyone, who wants to show keyboard without UITextField
/UITextView
for some reasons, could easily extend some view, which requires text input by implementing UIKeyInput
protocol and canBecomeFirstResponder
method.