textfield click vs drag

时间:2017-03-11 13:33:31

标签: ios iphone swift

我有一个文本字段,可以单击进行编辑,然后使用UIPanGesture沿y轴拖动。

当用户点击文字字段时,我想将textAlignement设置为.left&当用户拖动文本字段时,我想保持文本中心对齐。

我在viewDidLoad方法中初始化:

let dragText = UIPanGestureRecognizer(target: self, action: #selector(userDragged))
    textOverlay.addGestureRecognizer(dragText)

textOverlay.addTarget(self, action: #selector(textClicked), for: UIControlEvents.touchDown)

回调方法:

func textClicked() {
    //let actLocation = textOverlay.frame.origin.y
    textOverlay.frame.origin.y = self.finalKBH
    self.textOverlay.textAlignment = .left
    print("Text clicked")
}

func userDragged(gesture: UIPanGestureRecognizer) {
    let loc = gesture.location(in: self.view)
    self.textOverlay.frame.origin.y = loc.y
    self.textOverlay.textAlignment = .center
    print("Text dragged")
}

我遇到的问题是区分实际的“点击编辑”问题。并拖动手势。

在拖动文本字段时,还会调用textClicked函数,文本将对齐到左侧。

有没有办法可以区分这两种行为?

我试图将textClicked目标更改为UIControlEvents.touchUpInside,但我的功能未在控制台中注册。

非常感谢提前

2 个答案:

答案 0 :(得分:0)

要检测文本字段何时进入编辑模式,请实施iOS

textFieldDidBeginEditing(_:)方法
UITextFieldDelegate

答案 1 :(得分:0)

也许,如果你出于某种原因必须使用叠加层,请长按?

let longPressRecognizer = UILongPressGestureRecognizer(target: self, action: "longPressed:")
textOverlay.addGestureRecognizer(longPressRecognizer)