UITableViewはビューフレームと原点を編集した後にスクロールしません。
-
12-09-2019 - |
質問
私は、テーブルビューの下部にあるテーブルセル内UITextViewを実装しようとしています。
私は、ここでの提案を試してみたテキストフィールドが選択されている場合のUITableViewのスクロールを作る、および、他のソリューションが、私は人為的にキーボードのためのスペースを作成するために、現在のビューに余分な高さを追加する必要があるため、彼らは少し異なっている。
ここで私はそれが私のアプリに移植するために、前の溶液に加えるものです。
-(void) keyboardWillShow:(NSNotification *)note {
CGRect frame = self.view.frame;
frame.size.height += keyboardHeight;
frame.origin.y -= keyboardHeight;
self.view.frame = frame;
}
-(void) keyboardWillHide:(NSNotification *)note
{
CGRect frame = self.view.frame;
frame.size.height -= keyboardHeight;
frame.origin.y += keyboardHeight;
}
この操作を行うと、正しく表示に高さを追加し、セルにスクロールしますが、元のビューの高さを復元した後、現在の可視のビューを超えてスクロールすることは不可能となり、境界の外側に有効なコンテンツがあっても(私が表示されますスクロールバーが戻ってバウンスする前に、テキストビュー)。
私はkeyboardWillShowでテーブルビューのフレームや境界(ないビュー)を保存し、keyboardWillHideにそれらを復元しようとすると、スクロールが復元されますが、ビューは半分にカットされます。
のほか、ビューの一番下に追加の高さをハードコーディングこれまでいかなる救済策はありますか?
解決
私は、ビューの原点を編集コードを除去することにより、ロックされたスクロールの私の問題を解決することができました。また、私は私の計算ではテーブルビューのcontentSizeプロパティを使用して、一番下のセルにスクロール実装しました。
-(void) keyboardWillShow:(NSNotification *)note
{
if(!isKeyboardShowing)
{
isKeyboardShowing = YES;
CGRect keyboardBounds;
[[note.userInfo valueForKey:UIKeyboardBoundsUserInfoKey] getValue: &keyboardBounds];
CGFloat keyboardHeight = keyboardBounds.size.height;
CGRect frame = self.view.frame;
frame.size.height += keyboardHeight;
self.view.frame = frame;
CGPoint scrollPoint = frame.origin;
scrollPoint.y += _tableView.contentSize.height - keyboardHeight;
[_tableView setContentOffset:scrollPoint animated:YES];
}
}
所属していません StackOverflow