It is possible to show keyboard without using UITextField and UITextView iphone app?

心不动则不痛 提交于 2019-12-02 17:57:55

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:

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.

iPhone Programmatically

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 !

https://github.com/havocked/TZKeyboardPop

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!