iOS Swift 按钮在视图中没有响应

Posted

技术标签:

【中文标题】iOS Swift 按钮在视图中没有响应【英文标题】:iOS Swift Buttons Not Responding In View 【发布时间】:2017-11-13 22:37:07 【问题描述】:

我编写了一个类,其中显示一个视图,该视图具有UITextView 和几个按钮。一切正常,除了按钮不响应点击。以下是我认为是我班级中的相关代码:

class FullPrompt:UIViewController 
    var canceledPressedCallback:(()->()?)?=nil
    var okPressedCallback:((_ txt: String)->()?)? = nil
    var popupView = UIView()
    var field = UITextView()
    var parentView = UIView()

    func prompt(_ message:String,view: UIViewController,numberInput: Bool, callback: @escaping (_ txt: String)->()) 
        prompt(message, view: view, numberInput: numberInput, callback: callback,cancelCallback: nil,defaultText: "")
    

    func prompt(_ prompt:String,view: UIViewController,numberInput: Bool, callback: @escaping (_ txt: String)->(), cancelCallback: (()->())?,defaultText: String) 
        canceledPressedCallback=cancelCallback
        okPressedCallback=callback

        let cancelButton=UIButton(frame: CGRect(x: 10, y: y, width: 70, height: 32))
        cancelButton.setTitle("Cancel", for: .normal)
        cancelButton.addTarget(self, action: #selector(cancelButtonPressed(_:)), for: .touchUpInside)
        popupView.addSubview(cancelButton)
        let okButton=UIButton(frame: CGRect(x: 210, y: y, width: 70, height: 32))
        okButton.setTitle("Ok", for: .normal)
        okButton.setTitleColor(UIColor.blue, for: .normal)
        okButton.addTarget(self, action: #selector(okButtonPressed(_:)), for: .touchUpInside)
        popupView.addSubview(okButton)
        view.view.addSubview(popupView)
    

    func cancelButtonPressed(_ sender: UIButton ) 
        popupView.removeFromSuperview()
        if canceledPressedCallback != nil 
            canceledPressedCallback!()
        
    

    func okButtonPressed(_ sender: UIButton) 
        popupView.removeFromSuperview()
        okPressedCallback!(field.text)
    

我做错了什么?

【问题讨论】:

您的所有视图都没有有用的框架。 不确定如何实例化和显示此 VC,但您似乎正在将此 VC 中的按钮添加到调用 VC 的视图层次结构中。如果这样做,您必须调用某些方法,以便两个 VC 都知道发生了什么(否则,例如,可能无法识别触摸)。请参阅this answer 了解更多详情。 【参考方案1】:

我明白了。我的错误是在我的班级中添加了一个视图属性(popupView)。由于我的类是 UIViewController 的子类,我需要将我的子视图添加到类的视图属性中,而不是创建另一个视图。所以,基本上,无论我在哪里添加一些东西到 popupView,我只是用 self.view 替换它。他们的按钮工作正常。

【讨论】:

以上是关于iOS Swift 按钮在视图中没有响应的主要内容,如果未能解决你的问题,请参考以下文章

UIButtons 在动画期间没有响应 - iOS Swift 3

带有按钮的 iOS 子视图不响应触摸。

SWIFT TableView 没有响应

表格视图中的按钮没有响应其单元格编号

按钮对 UITableView 的 headerview 没有响应

UIButton按钮点击无响应处理方法