Re:제로부터 시작하는 키보드 제작 in Swift (1일째)
야관 시작하고, 눈치채면 아침이 되어 있었습니다. 렘 린타마란.
「철혈의 오펜스」도 2기가 시작되어 개인적으로 주목하고 있습니다.
...여담이 지났습니다. 주제에 들어가자.
앱 내에서 사용할 수있는 자체 키보드를 원합니다 ...
iOS 측에서도 원래 준비되어 있는 Number Pad 와 Decimal Pad 는 결정 키가 없거나 불필요한 키가 붙어 있거나 뭔가 불편한 경우가 있습니다.
「CustomKeyboard로 구현하자」라고 생각하면, 일일이 유저에게 설정으로부터 허가를 받지 않으면 사용할 수 없거나도 그것도 불편.
그리고, 발견한 것이 이하.
Custom Views for Data Input - Apple Developers Guide -
과연, UITextField.inputView
에 UIView
돌진하면 좋을까.
만들겠습니까? 처음부터... 아니, 0부터!
만들어 보자
UI 만들기
미리
Main Storyboard
에 UITextField
를 준비하고 ViewController
측에 Outlet 해 두십시오.다음 두 파일을 만듭니다.
CustomKeyboard.xib
CustomKeyboard.swift
CustomKeyboard.xib
에 적당하게 버튼을 배치합니다.(
File's Owner
로 CustomKeyboard
를 설정해 주세요)CustomKeyboard.swift
의 내용은 다음과 같습니다.class CustomKeyboard: UIView {
// コードから呼ばれるInitializer
override init(frame: CGRect) {
super.init(frame: frame)
initView()
}
// xib/storyboardから呼ばれるInitializer
required public init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
initView()
}
func initView() {
// xibファイルからViewを読み込みます
let view = Bundle.main.loadNibNamed("CustomKeyboard",
owner: self,
options: nil)?.first as! UIView
addSubview(view)
// AutoLayoutの制約関連を設定
view.translatesAutoresizingMaskIntoConstraints = false
let bindings = ["view": view]
addConstraints(NSLayoutConstraint.constraints(
withVisualFormat: "H:|[view]|",
options: NSLayoutFormatOptions(rawValue: 0),
metrics: nil,
views: bindings))
addConstraints(NSLayoutConstraint.constraints(
withVisualFormat: "V:|[view]|",
options: NSLayoutFormatOptions(rawValue: 0),
metrics: nil,
views: bindings))
}
}
이것으로 UI 준비가 완료됩니다.
ViewController 측 설정
그리고는
ViewController
로 UITextField.inputView
에 방금 작성한 CustomKeyboard
를 대입하면 완료입니다.class ViewController: UIViewController {
@IBOutlet weak var textField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
setKeyboard()
}
func setKeyboard() {
// viewを生成
let keyboardView = CustomKeyboard()
// サイズを決めます
let frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height / 3)
keyboardView.frame = frame
// 代入
textField.inputView = keyboardView
}
...
나머지는 실행해보십시오.
전화해보기
그런 다음 에뮬레이터에서 실행하고 TextField를 탭해보십시오.
아래와 같이 아래에서 훨씬 View가 표시됩니다.
그래, 잠깐만...
키보드는 표시할 수 있었습니다만, 이대로는 입력할 수 없습니다.
눌러도 아무것도 반응하지 않습니다.
거기도 스스로 구현하지 않으면 안됩니다. 자세한 내용은 다음에 해 봅시다.
대략적으로 설명하면 ...
CustomKeyboard.swift
에 delegate
를 정의 ViewController
측에서 받고 UITextField.text
의 값을 다시 씁니다 느낌입니다.
Reference
이 문제에 관하여(Re:제로부터 시작하는 키보드 제작 in Swift (1일째)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hiro_universe/items/effc8bfbbbf728aa626c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)