swiftでuitextviewに完了ボタンを設置してキーボードを閉じる方法
はじめに
uitextfieldでは基本的に改行がないので、改行を押されたらキーボードを閉じる処理を実装すればよかったのですが、uitextviewの場合は改行も当然入力したいと思われるので同じ方法が使えませんでした。
で、今回はキーボードの上に別途に完了ボタンを設置してそれを押されたらキーボードを閉じるという実装を行いました。safariでテキストボックスを選択したときと同じような挙動になります。
完成イメージはこんな感じになります
実装方法
1. UITextViewDelegateをデリゲートします
class SampleViewController: BaseViewController, UITextViewDelegate { override func viewDidLoad() { super.viewDidLoad() ・・・ } }
2. UiTextViewを作成して完了ボタンを追加します
class SampleViewController: BaseViewController, UITextViewDelegate { var textView: UITextView! override func viewDidLoad() { ・・・ textView = UITextView() textView.frame = CGRectMake(xTextView, yTextView, widthTextView, heightTextView) var accessoryView = UIView(frame: CGRectMake(0, 0, widthMax, 44)) accessoryView.backgroundColor = UIColor.whiteColor() var closeButton = UIButton(frame: CGRectMake(xCloseButton, yCloseButton, 100, 30)) closeButton.setTitle("完了", forState: UIControlState.Normal) closeButton.setTitleColor(UIColor.blackColor(), forState: UIControlState.Normal) closeButton.contentHorizontalAlignment = UIControlContentHorizontalAlignment.Right closeButton.addTarget(self, action: "onClickCloseButton:", forControlEvents: .TouchUpInside) accessoryView.addSubview(closeButton) textView.inputAccessoryView = accessoryView self.view.addSubview(textView) } }
3. 完了ボタンを押された時にキーボードを閉じる処理を実装します
class SampleViewController: BaseViewController, UITextViewDelegate { var textView: UITextView! ・・・ func onClickCloseButton(sender: UIButton) { textView.resignFirstResponder() }
こんな感じで実装できました
以上です