0

I have some Class extended from base class (MSC_CLItem) like this:

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. All of the extended objects will be added in UIScrollView. Now my problem is: An uiimageview with TapGesture inside of custom view not detect action. 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:]

I'm very confused of which section of my code is wrong?

Thank you

Imran Sh
  • 1,623
  • 4
  • 27
  • 50

2 Answers2

1

You must declare the super class as 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

Got Unrecognized selector -replacementObjectForKeyedArchiver: crash when implementing NSCoding in Swift [Xcode 6 GM]

Community
  • 1
  • 1
user3182143
  • 9,459
  • 3
  • 32
  • 39
0

I guess here can be a problem. Write this line without ":"

let tapRecognizer = UITapGestureRecognizer(target: self, action: Selector("imageTapped"))
Berike
  • 39
  • 1
  • 5