Last active
January 20, 2022 15:14
-
-
Save austinzheng/a8563c6babfd61401be3 to your computer and use it in GitHub Desktop.
Simple UIKeyInput example
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import UIKit | |
/// A very simple example view that can accept keyboard input and add or delete text from an enclosed label. | |
class CustomTextInputView : UIControl, UIKeyInput { | |
var label : UILabel? | |
override func canBecomeFirstResponder() -> Bool { | |
return true | |
} | |
init() { | |
super.init(frame: CGRectZero) | |
build() | |
addTarget(self, action: Selector("onTap:"), forControlEvents: .TouchUpInside) | |
} | |
@objc private func onTap(_: AnyObject) { | |
// When the view is tapped, it becomes the first responder. If the keyboard is not already on screen, it will appear. | |
becomeFirstResponder() | |
} | |
required init(coder aDecoder: NSCoder) { | |
super.init(coder: aDecoder) | |
build() | |
addTarget(self, action: Selector("onTap:"), forControlEvents: .TouchUpInside) | |
} | |
/// Programmatically create and configure the enclosed label. | |
private func build() { | |
let lbl = UILabel() | |
lbl.setTranslatesAutoresizingMaskIntoConstraints(false) | |
lbl.numberOfLines = 0 | |
addSubview(lbl) | |
lbl.font = UIFont(name: "HelveticaNeue-Light", size: 14.0)! | |
// Constrain! | |
let views = ["lbl": lbl] | |
addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("|-[lbl]-|", options: nil, metrics: nil, views: views)) | |
addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-[lbl]-|", options: nil, metrics: nil, views: views)) | |
label = lbl | |
} | |
// MARK: UIKeyInput | |
func hasText() -> Bool { | |
return label?.text?.isEmpty ?? false | |
} | |
func insertText(text: String) { | |
label?.text = (label?.text ?? "") + text | |
} | |
func deleteBackward() { | |
if let text = label?.text where !text.isEmpty { | |
let newText = text[text.startIndex..<text.endIndex.predecessor()] | |
label?.text = newText | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hi,
I am taking input from external device. if I use canBecomeFirstResponder true, keyboard coming on top of the View. is it possible to hide the keyboard?.
here is my code.
class KeyView: UIView, UIKeyInput {