如何在自定义框架中捕获UIButton的UIEvents?

时间:2016-08-02 12:59:05

标签: ios frameworks uibutton swift2

我创建了自己的框架,我需要提供一个按钮并单击按钮我将在框架中执行预定义的操作。
这是我的代码。

public class WebButton: NSObject {
    public func enableWebButton(enable:Bool)
    {
        if(enable)
        {
            let appWindow =  UIApplication.sharedApplication().keyWindow
            let webBtn = UIButton(frame:CGRectMake((appWindow?.frame.size.width)! - 70,(appWindow?.frame.size.height)! - 70,50,50))
            let frameworkBundle = NSBundle(forClass: self.classForCoder)
            let img = UIImage(named: "btn_icon.png", inBundle: frameworkBundle, compatibleWithTraitCollection: nil)
            webBtn.setImage(img, forState: .Normal)
            webBtn.layer.cornerRadius = webBtn.frame.size.width / 2;
            webBtn.layer.masksToBounds = true
            webBtn.addTarget(self, action: "webButtonClick", forControlEvents: .TouchUpInside)
            appWindow?.addSubview(webBtn)
            print("btn created")
        }
    }

    func webButtonClick()
    {
        print("btn Clicked")
    }
}

在这段代码中,我在我的示例项目上获得了按钮,但点击按钮,没有任何反应。

  

“btn created”

日志将打印,但

  

“btn点击”

永远不会打印。
请帮我解决这个问题。
提前谢谢。

1 个答案:

答案 0 :(得分:0)

尝试使用此代码创建按钮和webButtonClick功能:

public func enableWebButton(enable:Bool)
{
    if(enable)
    {
        let appWindow =  UIApplication.sharedApplication().keyWindow
        let webBtn = UIButton(frame:CGRectMake((appWindow?.frame.size.width)! - 70,(appWindow?.frame.size.height)! - 70,50,50))
        let frameworkBundle = NSBundle(forClass: self.classForCoder)
        let img = UIImage(named: "btn_icon.png", inBundle: frameworkBundle, compatibleWithTraitCollection: nil)
        webBtn.setImage(img, forState: .Normal)
        webBtn.layer.cornerRadius = webBtn.frame.size.width / 2;
        webBtn.layer.masksToBounds = true
        webBtn.addTarget(self, action: "webButtonClick:", forControlEvents: UIControlEvents.TouchUpInside)
        appWindow?.addSubview(webBtn)
        print("btn created")
    }
}


func webButtonClick(sender:UIButton!)
{
    print("btn Clicked")
}