スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

UITextFieldがキーボードで隠れるのを防ぐ

LINEのインターフェースのように下部にテキストフィールドがあって、それをタップするとキーボードがテキストフィールドを押し上げるような動きの実装方法。
ちょっとハマったポイントがあったのでそこも指摘。

まずコードはこんな感じ。

override func viewDidLoad() {
super.viewDidLoad()
NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillShow:"), name:UIKeyboardWillShowNotification, object: nil);
NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillHide:"), name:UIKeyboardWillHideNotification, object: nil);
}

func keyboardWillShow(notification: NSNotification) {
var info = notification.userInfo!
var keyboardFrame: CGRect = (info[UIKeyboardFrameEndUserInfoKey] as NSValue).CGRectValue()

UIView.animateWithDuration(0.1, animations: { () -> Void in
self.bottomConstraint.constant = keyboardFrame.size.height + 20
})
}


これをこのままコピペしても「bottomConstraint.constant」の部分にエラーが出る。
これは何かと言うとUITextFieldの下端と画面の下端のスペースを表している。
これでピンとこない人は下記を参照のこと。
http://blog.tsumikiinc.com/article/20150123_autolayout-view.html
http://stackoverflow.com/questions/25693130/move-textfield-when-keyboard-appears-swift

さて、これで意気揚々とテストしてみると上手くいかない場合がある。
その原因の1つが「 テキストフィールドが別のビューで隠れてしまっているだけ」
ビューのz orderを入れ替える、具体的にはテキストフィールドが一番上に来るようにしてあげればいい。

self.view.bringSubviewToFront(myTextField) //textfieldを最前へ
self.view.sendSubviewToBack(myFrontView) //textfieldを隠しているビューを最背へ

コメント

コメントの投稿

非公開コメント

PR

PR

プロフィール

何でも書くman

Author:何でも書くman
思ったことや備忘録など、とりあえずなんでも書きます。IT系のことや趣味、生活に関わることなども。

ページの先頭へ戻る
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。