简体   繁体   English

Swift:用于uiimageview的UITapGestureRecognizer在自定义视图中终止应用程序

[英]Swift: UITapGestureRecognizer for uiimageview terminate app in custome view

I have some Class extended from base class ( MSC_CLItem ) like this: 我有一些从基类( MSC_CLItem )扩展的类,如下所示:

class MSC_CLItem
{
    var Type:MSC_CustomListType!

    func RenderUI(Point:CGPoint) -> UIView
    {
        return UIView(frame: CGRect.zero)
    }
}

Each extended class must to override RenderUI func to generate itself. 每个扩展类都必须重写RenderUI func以生成自身。 All of the extended objects will be added in UIScrollView. 所有扩展对象都将添加到UIScrollView中。 Now my problem is: An uiimageview with TapGesture inside of custom view not detect action. 现在我的问题是:在自定义视图中带有TapGesture的uiimageview无法检测到动作。 For example my class is: 例如我的班级是:

class MSC_CLItem_Tizer : MSC_CLItem
{
    var Title:String!
    var Video:MSC_CLItem_TizerVideo!
    var Detail:MSC_CLItem_TizerDetail!

    private init(title:String!)
    {
        super.init()
        self.Title = title
        super.Type = .Tizer
    }

    override func RenderUI(Point:CGPoint) -> UIView
    {
        let v = UIImageView()
        v.backgroundColor = UIColor.yellowColor()
        let screenSize: CGRect = UIScreen.mainScreen().bounds
        v.frame.size = CGSize(width: screenSize.width - 10, height: CGFloat(160))
        v.frame.origin = Point

        let vid = UIImageView()
        vid.image = UIImage(named: "default")
        vid.backgroundColor = UIColor.grayColor()
        vid.contentMode = .ScaleAspectFill
        vid.af_setImageWithURL(NSURL(string: "Image HTTP url")!)
        vid.frame.size = v.frame.size
        vid.frame.origin = CGPoint(x: 0, y: 0)
        vid.clipsToBounds = true
        vid.userInteractionEnabled = true
        v.userInteractionEnabled = true
        let tapRecognizer = UITapGestureRecognizer(target: self, action: Selector("imageTapped:"))
        vid.addGestureRecognizer(tapRecognizer)
        v.addSubview(vid)
    }

    func imageTapped(gestureRecognizer: UITapGestureRecognizer) {
        //Not detected to here
    }
}

And when I tap on image the following error occurred: 当我点击图像时,发生以下错误:

NSForwarding: warning: object 0x7c8cc830 of class 'MSC_CLItem_Tizer' does not implement methodSignatureForSelector: -- trouble ahead Unrecognized selector -[MSC_CLItem_Tizer imageTapped:] NSForwarding:警告:类'MSC_CLItem_Tizer'的对象0x7c8cc830未实现methodSignatureForSelector:-提前发生故障无法识别的选择器-[MSC_CLItem_Tizer imageTapped:]

I'm very confused of which section of my code is wrong? 我对代码的哪一部分错误感到非常困惑?

Thank you 谢谢

You must declare the super class as NSObject 您必须将超类声明为NSObject

class MSC_CLItem : NSObject
{
  ......
}


let tapRecognizer = UITapGestureRecognizer(target: self, action: Selector("imageTapped:"))
tapGesture.numberOfTouchesRequired = 1;
tapGesture.numberOfTapsRequired = 1;
vid.addGestureRecognizer(tapRecognizer)
v.addSubview(vid)
self.view.addSubview(v)

For more details 更多细节

Does not implement methodSignatureForSelector: — trouble ahead 不实现methodSignatureForSelector:—前面的麻烦

Got Unrecognized selector -replacementObjectForKeyedArchiver: crash when implementing NSCoding in Swift [Xcode 6 GM] 得到了无法识别的选择器-replacementObjectForKeyedArchiver:在Swift中实现NSCoding时崩溃[Xcode 6 GM]

I guess here can be a problem. 我想这可能是个问题。 Write this line without ":" 将此行写为不带“:”

let tapRecognizer = UITapGestureRecognizer(target: self, action: Selector("imageTapped"))

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM