我是新的iOS编程人员,现在着迷于使用google提供的MaterialComponents。现在,我在名为Dialog的组件中遇到了一个问题。

当视图已在屏幕上弹出时,当我触摸该弹出视图的外部时,该视图已关闭。我不想在我的应用程序中发生这种情况。

我不希望用户在弹出视图之外单击以关闭该弹出视图。我想要的是我只希望用户单击我提供给用户选择的操作按钮,然后仅单击该操作按钮时应关闭视图。

真的很高兴您的帮助。

最佳答案

MDCAlertController继承自UIViewController

因此,为了限制用户在MDCAlertController之外单击,您必须访问其属性view,然后访问superview?.subviews[0].isUserInteractionEnabled = false
我已经使用MDCAlertController完成了一个示例

let alert = MDCAlertController(title: title, message: message)

    alert.buttonTitleColor = UIColor(red:0.03, green:0.62, blue:0.09, alpha:1.0)

    //MDCAlertControllerThemer.applyScheme(alertScheme, to: alert)
    let okayAction = MDCAlertAction(title: "Okay") { (action) in

        print("User click okay")

    }
    let cancelAction = MDCAlertAction(title: "Cancel", handler: nil)
    alert.addAction(okayAction)
    alert.addAction(cancelAction)

    self.present(alert, animated: true, completion: {

        // When the Dialog view has pop up on screen then just put this line of code when Dialog view has completed pop up.
        alert.view.superview?.subviews[0].isUserInteractionEnabled = false
    })

关于ios - 如何使用MDCAlertController Material 设计禁用触摸屏外 View View -Swift,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53225321/

10-09 06:26