Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift:AddGestureRecognitor在课堂上不工作_Swift_Uigesturerecognizer_Unrecognized Selector - Fatal编程技术网

Swift:AddGestureRecognitor在课堂上不工作

Swift:AddGestureRecognitor在课堂上不工作,swift,uigesturerecognizer,unrecognized-selector,Swift,Uigesturerecognizer,Unrecognized Selector,我的班级: class SelectBox { internal static func openSelector(list:[String: String], parent:UIView){ print("iosLog HELLO") parent.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(handleClick(sender:))))

我的班级:

class SelectBox {
    internal static func openSelector(list:[String: String], parent:UIView){
        print("iosLog HELLO")
        parent.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(handleClick(sender:))))
    }

    @objc func handleClick(sender: UITapGestureRecognizer) {
        print("iosLog CLICK")
    }
}
设置视图:

SelectBox.openSelector(list: AppDelegate.stateList, parent: bgPlaceInto)
启动后打印
HELLO
,但单击
view
后,我发现以下错误:

2018-07-07 18:39:12.298322+0430 Ma[971:260558][ChatService]:SMT: 2018-07-07 18:39:12.470392+0430 Ma[971:260525][ChatService]:RCV:2018-07-07 18:39:12.471851+0430 Ma[971:260591][ChatService]:RCV: 2018-07-07 18:39:14.674675+0430毫安[971:260392]*** 警告:“Ma.SelectBox”类的对象0x100a9fc70未实现 methodSignatureForSelector:--无法识别的选择器出现故障 +[Ma.SelectBox handleClickWithSender:]2018-07-07 18:39:14.675210+0430 Ma[971:260392]无法识别的选择器+[Ma.SelectBox 手舔带柄:]

如何将click listener设置为按类查看


谢谢

您的
openSelector
方法是静态的。在静态上下文中,单词
self
指的是周围类型的元类型的实例。在这种情况下,
选择orbox.Type

显然,
SelectorBox.Type
没有
handleClick
方法
SelectorBox
does

您需要使
openSelector
方法非静态:

internal func openSelector(list:[String: String], parent:UIView){
    print("iosLog HELLO")
    parent.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(handleClick(sender:))))
}
现在,
self
引用了
SelectorBox
实例

你可以这样称呼它:

// declare this at class level:
let box = SelectorBox()

// call the method like this
box.openSelector()
class ViewControllerPage: UIViewController, UITableViewDelegate, UITableViewDataSource { 
    @IBOutlet var bgGenderInto: UIView!
    let box = SelectBox()  
    override func viewDidLoad() { 
        super.viewDidLoad() 
        box.openSelector(list: AppDelegate.genderList, parent: bgGenderInto) 
    }
}
编辑:您的类应如下所示:

// declare this at class level:
let box = SelectorBox()

// call the method like this
box.openSelector()
class ViewControllerPage: UIViewController, UITableViewDelegate, UITableViewDataSource { 
    @IBOutlet var bgGenderInto: UIView!
    let box = SelectBox()  
    override func viewDidLoad() { 
        super.viewDidLoad() 
        box.openSelector(list: AppDelegate.genderList, parent: bgGenderInto) 
    }
}

您是否使用了“isUserInteractionEnabled=true”尝试将
SelectBox
标记为
@objc
?您需要将
handleClick
设置为静态,因为
openSelector
中的
self
是类,而不是类的实例。@V_rohit where?@Sweeper是,但不是work@ComputerIm你能描述一下发生了什么事吗?有任何错误消息吗?只有我收到
iosLog HELLO
error,单击
parent
,但没有work@ComputerIm你记得把
框放在班级级别吗?也就是说,在任何方法之外我的类:
class SelectBox{internal func openSelector(list:[String:String],parent:UIView){print(“iosLog HELLO”)parent.addgestureRecognitizer(uitagestureRecognitiser)(目标:self,动作:#选择器(handleClick(sender:))}@objc func handleClick(sender:uitagestureRecognitiser){print(“iosLog CLICK”)}
my code:
let box=SelectBox()box.openSelector(list:AppDelegate.genderList,parent:bgenderisto)
@ComputerIm这个“我的代码”在哪里?在一个方法中,对吗?如果不起作用,您需要将
框移动到该方法之外。