【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が表示されてくれるはずです。
おわりに
こんな便利なものがあったとは、、、
Author And Source
この問題について(【Swift】InputAccessoryViewを使う), 我々は、より多くの情報をここで見つけました https://qiita.com/REON/items/50663b4602a6d8a991e8著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .