关闭操作表时,ios tableview不会向上滚动

Posted

技术标签:

【中文标题】关闭操作表时,ios tableview不会向上滚动【英文标题】:ios tableview does not scroll up when action sheet is dismissed 【发布时间】:2015-02-12 11:15:55 【问题描述】:

我正在开发一个聊天应用程序,我使用 tableview 来显示发送和接收的消息以及带有文本字段的视图并在底部添加按钮。 单击添加按钮时,操作表会显示选项 一切正常,除了当我点击添加按钮并点击操作表的取消按钮,然后点击文本字段时......当显示键盘时,tableview 不会向上滚动

下面是keyboardwillshow通知的代码

KeyboardWillShow:

NSValue *keyboardBoundsValue = [[notification userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey];
    NSValue *keyboardBoundsValue = [[notification userInfo] objectForKey:UIKeyboardBoundsUserInfoKey];

    CGRect keyboardBounds;
    [keyboardBoundsValue getValue:&keyboardBounds];
    NSNumber *duration = [notification.userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey];
    NSNumber *curve = [notification.userInfo objectForKey:UIKeyboardAnimationCurveUserInfoKey];

    // Need to translate the bounds to account for rotation.
    keyboardBounds = [self.view convertRect:keyboardBounds toView:nil];

    CGRect containerFrame = viewDummy.frame;// viewDummy is the view where keyboard, add button and speak button is displayed
    containerFrame.origin.y = self.view.bounds.size.height - (keyboardBounds.size.height + containerFrame.size.height);
    NSLayoutConstraint *constPaddingwithViewTable.constant = keyboardBounds.size.height + containerFrame.size.height;

    // animations settings
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationBeginsFromCurrentState:YES];
    [UIView setAnimationDuration:[duration doubleValue]];
    [UIView setAnimationCurve:[curve intValue]];

    // set views with new info
    viewDummy.frame = containerFrame;


    // commit animations
    [UIView commitAnimations];


【问题讨论】:

【参考方案1】:

之前似乎有一些很好的问题和答案。

以下似乎特别好:How to make a UITextField move up when keyboard is present?

这也参考了有关键盘和内容滚动主题的 Apple 文档。它包括对他们的示例代码的修复。 Link

【讨论】:

【参考方案2】:

在下面添加这个设置你的约束 [self.view layoutIfNeeded];

【讨论】:

以上是关于关闭操作表时,ios tableview不会向上滚动的主要内容,如果未能解决你的问题,请参考以下文章

向上滚动 tableview 以隐藏导航栏的一半,整个表格得到偏移

SwiftUI - 如何防止工作表中的键盘向上推我的主 UI

从底部加载tableview,向上滚动(反向tableview)(iOS)

关闭操作表时 ShareKit 失去焦点

每次我重新加载 tableview 部分时 UITableView 都不会向上滚动

当键盘出现iOS时向上滚动tableview行