私はチャットインターフェースを作成していてWhatsAppのように、ユーザーが特定の距離でコレクションをスクロールすると表示される "scrollToBottom"ボタンを作成しました。このボタンは、キーボードが表示され、消えたときにキーボードフレームに完全に従います。唯一の問題は、キーボードが対話的に解除されているときです。このボタンをキーボードフレームに追従させることはできません。キーボードが隠された後でさえ、システムは通知を送信し、ボタンはその定数を変更する。スクロールでインタラクティブに解除されているキーボードの高さを取得
私はキーボードの通知をすべて試みましたが、どれもこの問題で私を助けませんでした。時間内に何かが必要なので、ボタンをキーボードに追従させることができます。でもUIKeyboardWillChangeFrameNotification
は私のために働いていません。上記のコードで
NSNotificationCenter.defaultCenter().addObserver(self,
selector:#selector(self.keyboardWillShow(_:)),
name:UIKeyboardWillShowNotification,
object:nil)
NSNotificationCenter.defaultCenter().addObserver(self,
selector:#selector(self.keyboardWillHide(_:)),
name:UIKeyboardWillHideNotification,
object:nil)
private func configureConstantViewNewMessages(notification: NSNotification){
if let userInfo = notification.userInfo {
let animationDuration = (userInfo[UIKeyboardAnimationDurationUserInfoKey] as! NSNumber).doubleValue
let keyboardEndFrame = (userInfo[UIKeyboardFrameEndUserInfoKey] as! NSValue).CGRectValue()
let convertedKeyboardEndFrame = view.convertRect(keyboardEndFrame, fromView: view.window)
let rawAnimationCurve = (notification.userInfo![UIKeyboardAnimationCurveUserInfoKey] as! NSNumber).unsignedIntValue << 16
let animationCurve = UIViewAnimationOptions(rawValue: UInt(rawAnimationCurve))
self.kNewMessages.constant = CGRectGetMaxY(view.bounds) - CGRectGetMinY(convertedKeyboardEndFrame) + 10
UIView.animateWithDuration(animationDuration, delay: 0.0, options: [.BeginFromCurrentState, animationCurve], animations: {
self.view.layoutIfNeeded()
}, completion: nil)
}
}
、Iは(kNewMessages)私のボタンの定数をアニメーション化する方法configureConstantViewNewMessages
を呼び出して、それがキーボードの高さに応じてその位置を変えることができます。
英語の間違いをお詫びし申し訳ありません。
を使用する必要があり、キーボードの幅と高さ
についての情報を含むユーザ情報を提供しますキーボードの解任(例えば、一番下に置いておきたい場合は、button.frame.size.height = scrollView.contentSize.heightのようになります)。または、キーボードを表示または非表示にするたびに、ボタンを保持し、その制約の値(animateWithDurationおよびcall layoutIfNeeded()を呼び出す)を変更することで、これを実現できます。 – Cristian
私はすでに2番目のオプションを使用しています。キーボードのフレームが変わるたびに、ボタンの下限に関連する制約を使用してその値を変更します。しかし、私の問題は、私がコレクションビューをスクロールするときにキーボードが消えることと関連しています。ユーザーが対話的にボタンを離している間、ボタンをキーボードのフレームに沿って移動させたいと思います。私が説明しているように少し奇妙であるかどうかはわかりません。 –