今回はiPhoneでキーボードを使って入力してる際に、入力を終了するボタンの実装について話していきたいと思います。
UIButtonを使ってボタンを作成
キーボードに完了ボタンを実装するためのUIViewを追加し、そこに編集を完了するボタンをUIButtonで作成し、追加していきます。
//ボタンを追加するためのViewを生成します。
let myKeyboard = UIView(frame: CGRectMake(0, 0, 320, 40))
myKeyboard.backgroundColor = UIColor.lightGrayColor()
//完了ボタンの生成
let myButton = UIButton(frame: CGRectMake(300, 5, 70, 30))
myButton.backgroundColor = UIColor.darkGrayColor()
myButton.setTitle("完了", forState: .Normal)
myButton.layer.cornerRadius = 2.0
myButton.addTarget(self, action: "onClickMyButton:", forControlEvents: .TouchUpInside)
//Viewに完了ボタンを追加する。
myKeyboard.addSubview(myButton)
このmyKeyboardをTextFieldのフィールドに設定すれば完了ボタンは表示されますが、まだボタンを押しても何も起こりません。
次の項目ではボタンを押した際に呼び出される編集を完了するメソッドについて説明していきます。
#編集を完了するメソッドの実装
次に完了ボタンを押した時と改行を押した時にキーボードを下げるメソッドを実装します。
//ボタンを押すとキーボードが下がるメソッド
func onClickMyButton (sender: UIButton) {
self.view.endEditing(true)
}
//改行押すとキーボードが下がるメソッド
func textFieldReturn(textField: UITextField) -> Bool {
self.view.endEditing(true)
return false
}
self.view.endEditing(true) で編集を完了できます。
#例えば
次にこの具体的な実装の仕方を例を用いてやっていきます。
//TextFieldを生成
myTextField = UITextField(frame: CGRectMake(self.view.frame.width/2, self.view.frame.height/2, 100, 50))
myTextField.backgroundColor = UIColor.grayColor()
//ボタンを追加するためのViewを生成します。
let myKeyboard = UIView(frame: CGRectMake(0, 0, 320, 40))
myKeyboard.backgroundColor = UIColor.lightGrayColor()
//完了ボタンの生成
let myButton = UIButton(frame: CGRectMake(300, 5, 70, 30))
myButton.backgroundColor = UIColor.darkGrayColor()
myButton.setTitle("完了", forState: .Normal)
myButton.layer.cornerRadius = 2.0
myButton.addTarget(self, action: "onClickMyButton:", forControlEvents: .TouchUpInside)
//Viewに完了ボタンを追加する。
myKeyboard.addSubview(myButton)
//ViewをFieldに設定する
myTextField.inputAccessoryView = myKeyboard
myTextField.delegate = self
//myTextFieldを追加する
self.view.addSubview(myTextField)
//ボタンを押すとキーボードが下がるメソッド
func onClickMyButton (sender: UIButton) {
self.view.endEditing(true)
}
//改行押すとキーボードが下がるメソッド
func textFieldShouldReturn(textField: UITextField) -> Bool {
self.view.endEditing(true)
return false
}
ここでは
ボタンを表示させたいTextField.inputAccessoryView = ボタンを追加したView
でキーボードに完了ボタンを実装しています。これを使えば完了ボタンだけでなく様々な機能をキーボードに追加できるので覚えておきましょう。
今回はキーボードに完了ボタンを実装しましたが、他にも様々なカスタマイズができるので皆さんも試してみてください。