0
キーボードが表示されたら、ビューを上に移動しようとしています。これは2つのビューで動作しますが、3つ目のコードでは、ビューが一見一定量下に移動してから、開始した正確な場所に戻るか、アニメーションが表示されます。デバッグすると、self.view.frameは設定されていませんが、このメソッドはありません。さらに、オフセットは他のビューと同様にビューが上に移動するように見えます。以下のkeyboardWillShowメソッドを参照してください。ビューフレームの原点を変更すると、元の位置に戻ってきます
func keyboardWillShow(notification: NSNotification){
if self.origFrame == nil{
self.origFrame = self.view.frame
}
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue(){
var testRect = self.view.frame
testRect.size.height -= keyboardSize.height
if !testRect.contains(loginBtn!.frame.origin){
let bottomSpace = self.view.frame.size.height - loginBtn.frame.origin.y - loginBtn.frame.size.height
let keyboardOverlap = keyboardSize.height - bottomSpace
let newY = self.origFrame!.origin.y - keyboardOverlap
self.view.frame.origin.y = newY
}
}
}
自動レイアウトを使用していますか?自動レイアウトを使用するときは、通常、ビューのフレームを変更するのは悪い習慣です。 –
@LukePatterson私はビューをレイアウトするために制約を使用します。その場合、キーボードが表示されたときにビューを移動するにはどうすればよいでしょうか? – steventnorris
Steven、キーボードの表示/非表示時にプログラムで制約を変更するのはどうですか? –