【Swift】InputAccessoryView 사용

소개



이번에는 InputAccessoryView라는 것을 사용하여 다음과 같은 것을 만들어 보겠습니다.



구현



다음과 같이 textView와 button을 넣은 InputAccessoryView.xib를 만듭니다.


그리고 InputAccessoryView.swift 에 다음과 같이 코드를 기술합니다.
import UIKit

final class InputAccessoryView: UIView {

    @IBOutlet private weak var textView: UITextView!
    @IBOutlet private weak var sendButton: UIButton!

    override init(frame: CGRect) {
        super.init(frame: frame)
        loadNib()
        setupViews()        
    }

    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

}

// MARK: - setup nib
private extension InputAccessoryView {
    func loadNib() {
        let nib = UINib(nibName: String(describing: InputAccessoryView.self), bundle: nil)
        guard let view = nib.instantiate(withOwner: self,
                                         options: nil).first as? UIView else { return }
        view.frame = self.bounds
        self.addSubview(view)
    }
}

// MARK: - setup views
private extension InputAccessoryView {
    func setupViews() {
        textView.layer.cornerRadius = 15
        sendButton.layer.cornerRadius = 15
    }
}

그런 다음 xib 및 swift 파일을 연결합니다. 아래와 같이 File's Owner의 Class를 방금 구현한 InputAccessoryView로 합니다.


여기서 File's Owner의 이 화면이 노랗게 보이면 IBOutlet을 다시 연결합시다.


그리고 마지막으로 ViewController를 다음과 같이 구현해 보겠습니다.
import UIKit

final class ViewController: UIViewController {

    private var myInputAccessoryView: InputAccessoryView = {
        let view = InputAccessoryView()
        view.frame = CGRect(x: 0, y: 0, width: view.frame.size.width, height: 60)
        return view
    }()
    override var inputAccessoryView: UIView? { myInputAccessoryView }
    override var canBecomeFirstResponder: Bool { true }

}

이제 이전과 같은 키보드 위에 textView와 button이 표시됩니다.

문서
참고

결론



이런 편리한 것이 있었던 것은,,,

좋은 웹페이지 즐겨찾기