首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIButton addTarget没有接到电话

UIButton addTarget没有接到电话
EN

Stack Overflow用户
提问于 2020-07-22 13:56:25
回答 2查看 97关注 0票数 0

我正在尝试创建一个UIAlertController,其中包含一个UITextField

文本字段的右侧应该有一个按钮(使用rightView属性)。该按钮应该查看图像,而不是常规文本按钮。

当我单击文本字段的按钮时,应该调用函数btnClicked,但它实际上从未被调用。

代码语言:javascript
复制
let alert = UIAlertController(title: "Testing", message: "", preferredStyle: .alert)
            
alert.addTextField { (field) in
    let chk = UIButton(type: UIButtonType.custom)
    chk.frame = CGRect(x: 2, y: 2, width: 18, height: 18)
    chk.tag = i
    chk.isUserInteractionEnabled = true
    chk.addTarget(self, action: #selector(self.btnClicked(sender:)), for: .touchUpInside)
    // I also tried the following:
    // chk.addTarget(chk, action: #selector(self.btnClicked(sender:)), for: .touchUpInside)

                    
    chk.setImage(UIImage(named: "rectangle"), for: .normal)
    chk.setImage(UIImage(named: "rectangle"), for: .selected)
    chk.setImage(UIImage(named: "rectangle"), for: .highlighted)
    chk.imageView!.contentMode = UIViewContentMode.scaleAspectFit
    chk.adjustsImageWhenHighlighted = true
                    
    field.rightView = chk
    field.rightViewMode = .always
}
            
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
alert.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil))
            
self.present(alert, animated: true, completion: nil)

这是btnClicked函数:

代码语言:javascript
复制
@objc func btnClicked(sender: UIButton) {
    print("test")
}

现在,我只是尝试打印test,看看它是否工作,但没有任何东西被打印到控制台上。

我做错了什么吗?到目前为止,我无法在单击btnClicked按钮后调用chk函数。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-22 14:35:36

我已经运行了您的代码,有一些编译器错误,我已经修复了它们。它工作得很完美。每当我点击按钮时,它每次都会在控制台上打印“测试”。

代码语言:javascript
复制
 func showAlert(){
   let alert = UIAlertController(title: "Testing", message: "", preferredStyle: .alert)

    alert.addTextField { (field) in
        let chk = UIButton(type: UIButton.ButtonType.custom)
        chk.frame = CGRect(x: 2, y: 2, width: 18, height: 18)
        chk.tag = 1
        chk.isUserInteractionEnabled = true
        chk.addTarget(self, action: #selector(self.btnClicked(sender:)), for: .touchUpInside)
        // I also tried the following:
        // chk.addTarget(chk, action: #selector(self.btnClicked(sender:)), for: .touchUpInside)


        chk.setImage(UIImage(named: "rectangle"), for: .normal)
        chk.setImage(UIImage(named: "rectangle"), for: .selected)
        chk.setImage(UIImage(named: "rectangle"), for: .highlighted)
        chk.imageView!.contentMode = UIView.ContentMode.scaleAspectFit
        chk.adjustsImageWhenHighlighted = true

        field.rightView = chk
        field.rightViewMode = .always
    }

    alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
    alert.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil))

    self.present(alert, animated: true, completion: nil)
}

@objc func btnClicked(sender: UIButton) {
    print("test")
}
票数 0
EN

Stack Overflow用户

发布于 2020-07-22 14:12:03

将目标chk更改为self (或btnClicked函数所在的位置)

代码语言:javascript
复制
chk.addTarget(self, action: #selector(self.btnClicked(sender:)), for: .touchUpInside)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63035920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档