UIScrollView
という拡張子を作成しました。ユーザーがテキストフィールドを選択してキーボードが表示されると、キーボードが途中であればテキストフィールドが上にスクロールします。私はUITextField
のために働いているが、それはUITextView
で動作するようには見えない。私はstackoverflowの多くの記事を検索しているが、何か助けになるとは思えない。ここでは拡張のためのコードは次のとおりです。UITextViewはキーボードのスクロールを避ける
extension UIScrollView {
func respondToKeyboard() {
self.registerForKeyboardNotifications()
}
func registerForKeyboardNotifications() {
// Register to be notified if the keyboard is changing size i.e. shown or hidden
NSNotificationCenter.defaultCenter().addObserver(
self,
selector: #selector(keyboardWasShown(_:)),
name: UIKeyboardWillShowNotification,
object: nil
)
NSNotificationCenter.defaultCenter().addObserver(
self,
selector: #selector(keyboardWillBeHidden(_:)),
name: UIKeyboardWillHideNotification,
object: nil
)
}
func keyboardWasShown(notification: NSNotification) {
if let info = notification.userInfo,
keyboardSize = info[UIKeyboardFrameBeginUserInfoKey]?.CGRectValue.size {
self.contentInset.bottom = keyboardSize.height + 15
self.scrollIndicatorInsets.bottom = keyboardSize.height
var frame = self.frame
frame.size.height -= keyboardSize.height
}
}
func keyboardWillBeHidden(notification: NSNotification) {
self.contentInset.bottom = 0
self.scrollIndicatorInsets.bottom = 0
}
私はちょうどそれが好きな設定になります。
scrollView.respondToKeyboard()
誰かが私のようにUITextView
を実装する方法の正しい方向に私を指すことができますキーボードが途中で移動している場合は上に移動しますか?
ありがとうございました。だから私は** UIScrollView **の拡張機能を持っていますが、拡張機能を** UITextView **と** UITextField **の拡張機能に変更する必要がありますか? @iOS Geek – coderdojo
代わりに、代わりにそれを行うより良い方法かもしれないと思ってください。 – coderdojo
@coderdojo - ビューコントローラで委任を使ってキーボードを操作する場合、拡張は必要ありません。 –