Gopinath
Gopinath

Reputation: 5442

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

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

Answers (6)

alegelos
alegelos

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

iPhone Programmatically
iPhone Programmatically

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

Sentry.co
Sentry.co

Reputation: 5569

In xcode simulator:

Sometimes the keyboard wont show because the software keyboard is off. Go to hardware -> Keyboard -> toggle keyboard 👌

Upvotes: 4

Mindhavok
Mindhavok

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

Kostub Deshmukh
Kostub Deshmukh

Reputation: 2952

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.

Upvotes: 21

Oleksandr Skrypnyk
Oleksandr Skrypnyk

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

Related Questions