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