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.
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.
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.
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];
In xcode simulator:
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 !
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
来源:https://stackoverflow.com/questions/13005969/it-is-possible-to-show-keyboard-without-using-uitextfield-and-uitextview-iphone