当前位置: 首页 > 知识库问答 >
问题:

#选择器(删除(_:))在uitextfield swift中崩溃

况胡媚
2023-03-14

每当我在UITextField中键入任何文本并长按该文本并选择Delete时,它就会崩溃。崩溃时显示“由于未捕获异常'NSInvalidArgumentException'而终止应用程序,原因:'-[App_Name.HomeVC Delete:]:无法识别的选择器发送到实例0x14E18BA00'”。我如何解决这个崩溃问题。下面是swift代码

    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)
            }
    }

共有1个答案

左凯定
2023-03-14

添加删除功能:

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)
        }
    }
 类似资料:
  • 我有一个Windows Phone应用程序,其中一个ListPicker绑定到一个ObservableCollection和一个选定的项目: 在ViewModel中: 当我试图从按钮处理程序的列表中删除所选项目时,我得到一个InvalidOperationException(SelectedItem必须始终设置为有效值): 我希望将SseltedCon条件设置为null(这实际上是列表中的第一个项

  • 我有一个JTable,它显示保存在ArrayList集合中的customer对象列表。从这个JTable中,我希望能够突出显示一个特定的客户,然后单击一个“delete customer”按钮,该按钮从选定的表行中提取ID列值,并用它用迭代器在ArrayList中搜索,找到匹配的客户,并将其从集合中删除。我在swing组件和eventlisteners方面的专业知识还有很多需要改进的地方,到目前为

  • 条款9:在删除选项中仔细选择 假定你有一个标准STL容器,c,容纳int, Container<int> c; 而你想把c中所有值为1963的对象都去掉。令人吃惊的是,完成这项任务的方法因不同的容器类型而不同:没有一种方法是通用的。 如果你有一个连续内存容器(vector、deque或string——参见条款1),最好的方法是erase-remove惯用法(参见条款32): c.erase(re

  • 有什么方法可以删除中的吗? 我在我的应用程序中有这个函数,但它的目的是只选择小时和分钟,不包括AM/PM,我试图,但它使时间为24hours,我只想要12小时。

  • 问题内容: 如何从选择框中删除项目或向其中添加项目?我正在运行jQuery,这应该使任务更轻松。下面是一个示例选择框。 问题答案: 删除一个选项: 添加一个选项:

  • 我有一个表,其中有多个表项可用。其中,对于某些表项,设置了背景和前景色。 在选择彩色项目时,由于文本颜色为白色,文本很难阅读,因此,我需要将前面的颜色更改为默认颜色,即黑色。我是用选择侦听器完成的 成功地改变了颜色。 但是现在我正在选择任何其他没有着色的项目,所以我想删除上面的选择侦听器并将文本颜色设置为彩色即白色。我不知道如何使用。 有人能帮忙吗?