Re:제로부터 시작하는 키보드 제작 in Swift (1일째)

9614 단어 iOSXcode8swift3
최근, 「Re:제로부터 시작하는 이세계 생활」을 보았습니다만, 꽤 좋았습니다.
야관 시작하고, 눈치채면 아침이 되어 있었습니다. 렘 린타마란.
「철혈의 오펜스」도 2기가 시작되어 개인적으로 주목하고 있습니다.

...여담이 지났습니다. 주제에 들어가자.

앱 내에서 사용할 수있는 자체 키보드를 원합니다 ...



iOS 측에서도 원래 준비되어 있는 Number Pad 와 Decimal Pad 는 결정 키가 없거나 불필요한 키가 붙어 있거나 뭔가 불편한 경우가 있습니다.
「CustomKeyboard로 구현하자」라고 생각하면, 일일이 유저에게 설정으로부터 허가를 받지 않으면 사용할 수 없거나도 그것도 불편.

그리고, 발견한 것이 이하.

Custom Views for Data Input - Apple Developers Guide -

과연, UITextField.inputViewUIView 돌진하면 좋을까.
만들겠습니까? 처음부터... 아니, 0부터!

만들어 보자



UI 만들기


  • Storyboard 준비
    미리 Main StoryboardUITextField 를 준비하고 ViewController 측에 Outlet 해 두십시오.
  • 사용자 지정 보기 준비

  • 다음 두 파일을 만듭니다.
  • CustomKeyboard.xib
  • CustomKeyboard.swift
  • CustomKeyboard.xib 에 적당하게 버튼을 배치합니다.
    ( File's OwnerCustomKeyboard 를 설정해 주세요)

    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 측 설정



    그리고는 ViewControllerUITextField.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.swiftdelegate 를 정의
  • ViewController 측에서 받고 UITextField.text의 값을 다시 씁니다

  • 느낌입니다.

    좋은 웹페이지 즐겨찾기