Reputation: 5442
I am working in iPhone messaging based app.
I want to show keyboard with keyboard inputAccessoryView
in keyboard without using UITextView
and UITextField
. It is possible to do this? Please any one help me on this.
Thanks in advance. Looking forward your help. Thanks.
EDIT:
Because i don't want the UITextField
/UITextView
and the control to be in UITextView
/UITextField
. I am going to add inputAccessoryView
on the keyboard is UITextView
. when the user touches the UITextview
in the keyboard inputView
the actual process will be continue.
Upvotes: 46
Views: 34858
Reputation: 2604
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
Upvotes: 15
Reputation: 1227
You can try the answers on these other SO posts:
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];
Upvotes: 2
Reputation: 5569
Sometimes the keyboard wont show because the software keyboard is off. Go to hardware -> Keyboard -> toggle keyboard 👌
Upvotes: 4
Reputation: 457
I have made a small utility file that can call a Keyboard with a textfield on a button touch !
https://github.com/havocked/TZKeyboardPop
Upvotes: 1
Reputation: 2952
See the documentation for doing that here:
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.
Upvotes: 21
Reputation: 2820
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.
Upvotes: 31