Swift:点击标签栏时关闭模态呈现的视图控制器

Swift: Dismissing Modally Presented View Controller when Tab Bar is tapped

我有一个带有子类 UITabBarController 的选项卡式应用程序。我的第一个视图控制器能够以模态方式呈现另一个视图控制器。

我的模态呈现的视图控制器应该在点击其内容之外的任何内容时自行关闭。负责的代码如下:

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    let touch : UITouch? = touches.first
    if (touch?.view != contentView){
        self.dismiss(animated: true, completion: nil)
    }
}

如果我点击视图外的背景,模态呈现的视图控制器会按预期消失。但是,如果我点击我的标签栏,它不会按预期关闭。

此外,如果我的模态视图控制器没有被关闭并且我使用选项卡栏转到另一个视图控制器,当我返回到我的第一个选项卡时,我会看到我的模态视图控制器在黑色上方背景(换句话说,当我在这种情况下关闭模态视图控制器时,剩下的就是黑色空隙和选项卡栏控制器。然后我被迫 select 另一个选项卡,然后 select再次打开第一个选项卡以修复它)。

关于如何解决 this/avoid 此行为的任何想法?我想知道是否有一种方法可以让我的选项卡栏上的 "pick up" 模态呈现视图被点击,这样它就可以自行关闭(或者如果有另一种更好的方法),但是在搜索之后有一段时间我还没有找到任何解决方案。

用于消除模态呈现的 viewController、

您可以在 Tabbar 按钮项上添加操作,

然后就用,

self.dismiss(animated: true, completion: nil)