ios13 防止下拉滚动到顶部的 tableView 以消除以模态呈现的 viewController 的工作表样式

标签 ios swift uitableview presentmodalviewcontroller

<分区>

我有一个 tableViewController,它以默认工作表样式呈现模式呈现。

我想保留这种模态样式,因为它看起来不错并且在我的应用中运行良好。我喜欢在下拉导航栏时解雇。但是,我不想要的是下拉 tableView 单元格以导致 tableViewController 在 tableView 已经滚动到顶部时被关闭。

有没有办法抑制这种行为,但保持工作表样式的模态呈现?我希望下拉 tableView 以保持垂直弹跳效果,并且只能通过向下拉导航栏部分通过平移来关闭模态呈现的 tableViewController。

最佳答案

当用户开始在表格 View 上拖动时,您可以通过在表格 View Controller 上将 isModalInPresentation 设置为 true 来禁用拉动关闭行为,然后重置当他们停止拖动时它返回到 false,如下所示:

class YourTableViewController: UITableViewController {
    override func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
        isModalInPresentation = true
    }

    override func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
        isModalInPresentation = false
    }
}

请注意,您仍然可以稍微拉下您的 TableView Controller ,但至少您不能完全关闭它。由于拖动停止时该值被设置回 false,您可以通过下拉导航栏来关闭。

此外,如果您将 UIRefreshControl 添加到 TableView ,它会在下拉 TableView 时禁用下拉关闭行为。

关于ios13 防止下拉滚动到顶部的 tableView 以消除以模态呈现的 viewController 的工作表样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58676063/

相关文章:

ios - SwiftUI macos NSWindow 实例

ios - 将默认值或 nil 值设置为函数的泛型类型参数

iOS UIButton 或单行 UITableView 用于下拉菜单之类的东西?

objective-c - UINavigationController 不推

ios - 状态恢复后,dismissViewControllerAnimated 未使用相同的动画

iphone - iOS AVAudioPlayer OSStatus 错误-43

iOS:是否可以创建 NSObjects 矩阵?

swift - 检测 AR 对象上的手指?

ios - 当应用程序运行时,本地通知不会弹出,但当应用程序处于后台时,本地通知会弹出

ios - 在 Storyboard中将 UITableView 的 rowHeight 设置为 UITableViewAutomaticDimension?