の場合、IQKeyboardManagerは機能しません現在、私はUITextFields
とUITextViews
がキーボードでカバーされないように、IQKeyboardManager
CocoaPodを使用してビューをスクロールしています。コンテナビューに埋め込まれたUITableViewが
私は正常にimport IQkeyboardManager
を実行し、他のビューでも動作させることができますが、UITableView
がコンテナビューに埋め込まれていると動作しません。
の場合、IQKeyboardManagerは機能しません現在、私はUITextFields
とUITextViews
がキーボードでカバーされないように、IQKeyboardManager
CocoaPodを使用してビューをスクロールしています。コンテナビューに埋め込まれたUITableViewが
私は正常にimport IQkeyboardManager
を実行し、他のビューでも動作させることができますが、UITableView
がコンテナビューに埋め込まれていると動作しません。
シンプルなソリューションで、オブザーバを作成する必要はありません。
素晴らしい!私の日を救った! –
ありがとうございます - 私もこれを使っています。これは、IQKeyboardManagerクラスがviewcontroller内のクラスの前に実行されることを保証するためです。 – SMSidat
コードの1行で面倒なので、私は行方不明だったことが分かるまで少なくとも4時間を過ごしました。どうもありがとう! –
試みは、私は同様の問題を持っていたし、それを修正したあなたはkeyboardSize
あなたはその質問を誤解しました。彼はスクロールを処理するためにCocoaPodを使用しています。ここで移動すべき全体のビューではありません。テーブルビューはスクロールする必要があります。 – BaseZen
を変更することができます
のviewDidLoadNSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(YourVC.keyboardWillShow(_:)), name:UIKeyboardWillShowNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(YourVC.keyboardWillHide(_:)), name:UIKeyboardWillHideNotification, object: nil)
で
と
func keyboardWillShow(notification:NSNotification)
{
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue()
{
self.view.frame.origin.y -= keyboardSize.height
}
}
func keyboardWillHide(notification:NSNotification)
{
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue()
{
self.view.frame.origin.y += keyboardSize.height
}
}
後に、すべてのビューをスクロールします図書館の著者から与えられたhereの情報を使用してy。
キー文は次のとおりです。
だから私が使用したソリューションは、テキストフィールド/ビューが編集されているときのUITableViewのスクロールプロパティを無効(デリゲートメソッドを使用)、その後、編集が完了したら、それを再度有効にすることです。これは、ライブラリがUITableViewをスクロール可能なものとして検出しないようにし、無視するようにして、代わりにコンテナビューを移動させます。ビューの移動が必要になったら、UIKeyboardWillShowNotificationを使用してスクロールを再度有効にすることができます。ライブラリ・ロジックは、TextFieldから最も近いscrollViewを見つけることです。あなたの場合はtableViewです。そのため、libraryはtableViewを選択してスクロールします。
ですから、例えば、UITextFieldのために:
-(void) textFieldDidBeginEditing:(UITextField *)textField {
[self.tableView setScrollEnabled:NO];
}
- (void) textFieldDidEndEditing:(UITextField *)textField {
[self.tableView setScrollEnabled:YES];
}
しかし、まだビューが上に移動した後、私はキーボード通知のために登録して、キーボードがしたら、スクロール可能にしているスクロールできるようにするアップ:
-(void) keyboardWillShow {
[self.tableView setScrollEnabled:YES];
}
- (void)viewDidLoad {
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillShow)
name:UIKeyboardWillShowNotification
object:nil];
}
あなたのソリューションは非常に論理的だと思われますが、viewDidLoad()でテーブルビューをスクロールできなくても、私にとってはうまくいきません。 – Arek
私はあなたの質問を明確にしましたが、助けになるほどの情報がまだありません。これを行うクラスのコード全体を表示します。 – BaseZen