UIView GestureRecognizer无法正常工作

时间:2015-08-28 14:22:32

标签: ios objective-c swift uiview uigesturerecognizer

视图创建:

var myView = UIView(frame: CGRect(x: 0, y: 0, width: 320, height: 40))
myView.addSubview(myLabel) // some label 
myView.backgroundColor = UIColor.whiteColor()
self.view.addSubview(myView)

var mySwipeGesture = UISwipeGestureRecognizer(target: self, action: "userDidSwipe:")
myView.userInteractionEnabled = true
myView.addGestureRecognizer(mySwipeGesture)

被叫方法:

func userDidSwipe(sender:UISwipeGestureRecognizer) {
    if sender.direction == UISwipeGestureRecognizerDirection.Right {
        switchToMain()
    }
}

这不起作用,方法userDidSwipe未被调用。 奇怪的是,相同的手势识别器mySwipeGesture被添加到另一个UIView (包含许多子视图)并且完美有效!

为什么它不适用于myView?我该怎么检查?

3 个答案:

答案 0 :(得分:1)

通常这有效。可能存在以下问题,

1)检查myView的userInteractionEnabled属性。

2)检查myView的框架(也许你正在不同的框架上滑动)。

3)myView上可能有另一个阻止手势的视图。

答案 1 :(得分:0)

您要向mySwipeGesture

添加另一个手势,而不是myView

替换你的行

myView.addGestureRecognizer(swipeGesture)

myView.addGestureRecognizer(mySwipeGesture)

答案 2 :(得分:0)

在你的代码中添加这一行你没有告诉滑动手势的方向

document.querySelector("textarea").addEventListener('keydown', handler);

function handler(evt) {
  console.log({
    keyCode: evt.keyCode,
    code: evt.code,
    key: evt.key
  });
}