私のアプリでは厄介なバグを扱っています。私はキーボードの表示と非表示を扱うチャット・ビュー・コントローラーを持っています。しかし、奇妙な部分は、バックグラウンドでアプリを置くときです。アプリがバックグラウンドから復帰したときに黒い画面が表示される
これは
(ホームボタンをタップする)バックグラウンドに行く前に、ビューコントローラであると私は置けば背景
から戻ったときに、これはアプリですアプリをバックグラウンドで使用すると、黒い画面が1秒間表示されますが、電話をブロックしてからロックを解除すると、黒い画面がそこに保持されます。
これは私のtableViewの下部に最初のメッセージを表示するために反転されたメッセージを表示するために使用されるキーボード
- (void)keyboardWillShowWithRect:(CGRect)rect
{
//We adjust inverted insets because tableview will be inverted
CGFloat displacementDistance = rect.size.height - self.composeBarView.bounds.size.height;
self.tableView.contentInset = UIEdgeInsetsMake(self.composeBarView.bounds.size.height, 0, displacementDistance, 0);
[self.view setFrame:CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y - displacementDistance, self.view.frame.size.width, self.view.frame.size.height)];
}
- (void)keyboardWillDismissWithRect:(CGRect)rect
{
//We adjust inverted insets because tableview will be inverted
CGFloat displacementDistance = rect.size.height - self.composeBarView.bounds.size.height;
self.tableView.contentInset = UIEdgeInsetsMake(self.composeBarView.bounds.size.height, 0, 0, 0);
[self.view setFrame:CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y + displacementDistance, self.view.frame.size.width, self.view.frame.size.height)];
}
に対処する方法です。ここで私はそれを行う方法は次のとおりです。
- (void)setupTableView
{
self.tableView.delegate = self;
self.tableView.dataSource = self;
//We adjust inverted insets because tableview will be inverted
self.tableView.contentInset = UIEdgeInsetsMake(self.composeBarView.bounds.size.height, 0, 0, 0);
self.tableView.rowHeight = UITableViewAutomaticDimension;
self.tableView.estimatedRowHeight = 500.0;
self.tableView.sectionFooterHeight = 30.0;
self.tableView.showsVerticalScrollIndicator = NO;
[self.tableView registerNib:[UINib nibWithNibName:@"MessagesDateHeader" bundle:nil] forHeaderFooterViewReuseIdentifier:@"MessagesDateHeader"];
// Table View is inverted so we display last messages at the bottom instead of top
self.tableView.transform = CGAffineTransformMakeRotation(-M_PI);
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTapOnTableView)];
tap.numberOfTapsRequired = 1;
[self.tableView addGestureRecognizer:tap];
}
をまた、私は私に何が起こっているかのヒントを与えることができますviewDidLoad
誰にもself.definesPresentationContext = YES;
セットを持っていますか?
ありがとうございました
は、Xcodeののビューのデバッグ機能を試してみてください示して
あなたはUIKeyboardWillChangeFrameNotification
に耳を傾け、[self.view layoutIfNeeded]
を次のようにそれを扱う使用することができます代わりの
keyboardWillShowWithRect:
に頼るとkeyboardWillDismissWithRect:
が使用されています。表示されているビューとその関係を表示する必要があります。 –'self.tableView.transform = CGAffineTransformMakeRotation(-M_PI)'で何を達成したいですか?これはビューを回転させますが、メッセージの順序は変更されません – lukwuerz
Beforアプリがバックグラウンドにあります。キーワードが画面に表示されているかどうかを確認してください。キーワードの却下方法やビューを表示するには[self.view endEditing:YES]を使用します。 –