我有一个文本字段,可以单击进行编辑,然后使用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
,但我的功能未在控制台中注册。
非常感谢提前
答案 0 :(得分:0)
要检测文本字段何时进入编辑模式,请实施iOS
textFieldDidBeginEditing(_:)
方法
UITextFieldDelegate
答案 1 :(得分:0)
也许,如果你出于某种原因必须使用叠加层,请长按?
let longPressRecognizer = UILongPressGestureRecognizer(target: self, action: "longPressed:")
textOverlay.addGestureRecognizer(longPressRecognizer)