21
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Swiftで編集を完了するボタンをキーボードに実装したい

Last updated at Posted at 2015-10-28

今回は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
でキーボードに完了ボタンを実装しています。これを使えば完了ボタンだけでなく様々な機能をキーボードに追加できるので覚えておきましょう。
今回はキーボードに完了ボタンを実装しましたが、他にも様々なカスタマイズができるので皆さんも試してみてください。

21
23
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?