Skip to content

Instantly share code, notes, and snippets.

@dictav
Created May 5, 2023 00:56
Show Gist options
  • Save dictav/09575038893cd3a1871909cca87d2891 to your computer and use it in GitHub Desktop.
Save dictav/09575038893cd3a1871909cca87d2891 to your computer and use it in GitHub Desktop.
擬似IMEっぽい何か
import UIKit
import PlaygroundSupport
class ViewController: UIViewController {
var label: UILabel?
var textField: TextField?
override func viewDidAppear(_ animated: Bool) {
self.becomeFirstResponder()
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
print("HERE", touches.first?.view)
if touches.first?.view == self.label {
self.textField?.becomeFirstResponder()
} else {
self.textField?.resignFirstResponder()
}
}
func subscribe(label: UILabel, textField: TextField) {
self.label = label
self.textField = textField
textField.addTarget(self, action: #selector(textChanged), for: .editingChanged)
}
@objc func textChanged() {
self.label?.text = self.textField?.text
}
}
class TextField: UITextField {
override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
return nil
}
}
let myView = UIView()
let viewController = ViewController()
viewController.view = myView
PlaygroundPage.current.liveView = viewController
let size = CGSize(width: 500, height: 40)
let label = UILabel(frame: CGRect(origin:.zero, size: size))
label.text = "hello"
label.isUserInteractionEnabled = true
myView.addSubview(label)
let textField = TextField(frame: CGRect(origin: CGPoint(x: 0, y: 40), size: size))
textField.layer.backgroundColor = CGColor(gray: 0.8, alpha: 1.0)
viewController.subscribe(label: label, textField:textField)
myView.addSubview(textField)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment