Swift2 使用UIPanGesture时发送到实例的选择器无法识别

Swift2 使用UIPanGesture时发送到实例的选择器无法识别,swift2,uigesturerecognizer,uipangesturerecognizer,xcode7.1,Swift2,Uigesturerecognizer,Uipangesturerecognizer,Xcode7.1,您好,我正在尝试将UIPangestureRecognitizer添加到UIImageView(在我的例子中,它是一个表情符号)。所有其他手势识别器(如长按、旋转和挤压)工作正常。然而,它给了我一个错误:当我添加UIPanGestureRecognizer时,无法识别的选择器被发送到实例。我花了一天时间试图找出原因,但没能解决。请帮忙!提前谢谢 这是我将UIGestureRecognitor添加到标签中的一个函数 func emojiInsert(imageName: String) {

您好,我正在尝试将UIPangestureRecognitizer添加到UIImageView(在我的例子中,它是一个表情符号)。所有其他手势识别器(如长按、旋转和挤压)工作正常。然而,它给了我一个错误:当我添加UIPanGestureRecognizer时,无法识别的选择器被发送到实例。我花了一天时间试图找出原因,但没能解决。请帮忙!提前谢谢

这是我将UIGestureRecognitor添加到标签中的一个函数

  func emojiInsert(imageName: String) {

    deleteButtonHides()

    let stickerView: UIImageView = UIImageView(frame: CGRectMake(backgroundImage.frame.width/2 - 50, backgroundImage.frame.height/2 - 50, stickerSize, stickerSize))
    stickerView.image = UIImage(named: imageName)
    stickerView.userInteractionEnabled = true
    stickerView.accessibilityIdentifier = "sticker"

    let deleteStickerButton: UIImageView = UIImageView(frame: CGRectMake(stickerView.frame.width - 5 - stickerView.frame.width/3, 5, stickerView.frame.width/3, stickerView.frame.height/3))
    deleteStickerButton.image = UIImage(named: "button_back")
    deleteStickerButton.accessibilityIdentifier = "delete"
    deleteStickerButton.userInteractionEnabled = true
    deleteStickerButton.alpha = 0
    deleteStickerButton.addGestureRecognizer(UITapGestureRecognizer(target: self, action: "deleteButtonTouches:"))
    stickerView.addSubview(deleteStickerButton)


    stickerView.addGestureRecognizer(UIPinchGestureRecognizer(target: self, action: "handlePinch:"))
    stickerView.addGestureRecognizer(UIRotationGestureRecognizer(target: self, action: "handleRotate:"))
    stickerView.addGestureRecognizer(UILongPressGestureRecognizer(target: self, action: "handleLongPress:"))
    stickerView.addGestureRecognizer(UIPanGestureRecognizer(target: self, action: "handlePan"))

    print("emojiInsert : \(imageName)")

    backgroundImage.addSubview(stickerView)
}
下面是我在view.swift末尾添加的回调函数。我使用touchesbreated和touchesMoved来拖动表情符号,但表情符号在旋转后以奇怪的方式移动。所以现在我试着用UIPanGesture来拖动表情符号

    @IBAction func handlePinch(recognizer : UIPinchGestureRecognizer) {
    if(deleteMode) {
        return
    }
    print("handlePinch \(recognizer.scale)")

    if let view = recognizer.view {
        view.transform = CGAffineTransformScale(view.transform,
            recognizer.scale, recognizer.scale)
        recognizer.scale = 1
    }
}

@IBAction func handleRotate(recognizer : UIRotationGestureRecognizer) {
    if(deleteMode) {
        return
    }
    if let view = recognizer.view {
        view.transform = CGAffineTransformRotate(view.transform, recognizer.rotation)
        recognizer.rotation = 0
    }
}


@IBAction func handlePan(recognizer:UIPanGestureRecognizer) {
    if(deleteMode) {
        return
    }

    let translation = recognizer.translationInView(self.view)
    if let view = recognizer.view {
        view.center = CGPoint(x:view.center.x + translation.x,
            y:view.center.y + translation.y)
    }
    recognizer.setTranslation(CGPointZero, inView: self.view)
}


@IBAction func handleLongPress(recognizer: UILongPressGestureRecognizer) {
    if(recognizer.state == UIGestureRecognizerState.Began) {
        if(!deleteMode) {
            print("LongPress - Delete Shows")
            for (_, stickers) in self.backgroundImage.subviews.enumerate() {
                for (_, deleteButtons) in stickers.subviews.enumerate() {
                    if let delete:UIImageView = deleteButtons as? UIImageView{
                        if(delete.accessibilityIdentifier == "delete") {
                            delete.alpha = 1
                        }
                    }
                }
            }
            deleteMode = true
        } else {
            deleteButtonHides()
        }
    }
}

再一次,请帮忙!提前谢谢

问题是缺少一个冒号。在以下行中:

stickerView.addGestureRecognizer(UIPanGestureRecognizer(target: self, action: "handlePan"))
handlePan
应为
handlePan:
。这是因为您的方法的Objective-C签名是:

- (void)handlePan:(UIPanGestureRecognizer *)recognizer
冒号是方法名称的一部分