【问题标题】:#selector(delete(_:)) crash in uitextfield swift#selector(delete(_:)) 在 uitextfield swift 中崩溃
【发布时间】:2021-07-06 17:49:15
【问题描述】:

每当我在uitextfield 中输入任何文本并长按该文本并选择delete 时,它就会崩溃。崩溃时显示“Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[App_Name.HomeVC delete:]: unrecognized selector sent to instance 0x14e18ba00'”。我该如何解决这个崩溃问题。下面是快速代码。

    class HomeVC: UIViewController{
    @IBOutlet weak var txtSearch: UITextField!
override func viewDidLoad() {
        super.viewDidLoad()
self.txtSearch.addTarget(self, action: #selector(self.txtChanged(_:)), for: .editingChanged)
@objc func txtChanged(_ sender : UITextField){
        print(txtSearch.text!)}
}
    override public func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
            if action == #selector(copy(_:)) || action == #selector(paste(_:)) || action == #selector(delete(_:)) || action == #selector(cut(_:))
                {
                    return true
                } else if action == Selector(("_lookup:")) || action == Selector(("_share:")) || action == Selector(("_define:")) {
                    return false
                }
                return super.canPerformAction(action, withSender: sender)
            }
    }

【问题讨论】:

  • 有一个错误的} at : print(txtSearch.text!)} ?这只是一个错字吗?
  • @PtitXav 这只是一个错字,主要问题是删除
  • 您返回true 表示您的视图控制器可以处理delete 操作,但是您的视图控制器没有实现delete 函数,因此您会崩溃。跨度>
  • @Paulw11 那么解决这个问题的解决方案是什么?
  • 如果您编写了视图控制器可以执行某些操作的代码,则您必须在视图控制器中添加相应的代码,即功能删除,...为此您返回 true。

标签: ios swift uitextfield


【解决方案1】:

添加删除功能:

class HomeVC: UIViewController{
    @IBOutlet weak var txtSearch: UITextField!
    override func viewDidLoad() {
        super.viewDidLoad()
        self.txtSearch.addTarget(self, action: #selector(self.txtChanged(_:)), for: .editingChanged)
    }

    @objc func txtChanged(_ sender : UITextField){
        print(txtSearch.text!)
    }


    override func delete(_ sender: Any?) {
        txtSearch.text = ""
    }

    override public func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
        if action == #selector(copy(_:)) || action == #selector(paste(_:)) || action == #selector(delete(_:)) || action == #selector(cut(_:))
            {
                return true
            } else if action == Selector(("_lookup:")) || action == Selector(("_share:")) || action == Selector(("_define:")) {
                return false
            }
            return super.canPerformAction(action, withSender: sender)
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多