Ios Swift Override 双击 UItextField
Posted
技术标签:
【中文标题】Ios Swift Override 双击 UItextField【英文标题】:Ios Swift Override double tap of UItextField 【发布时间】:2016-07-21 20:28:42 【问题描述】:我想在 UITextField 上双击编写自定义代码并阻止默认文本编辑和键盘弹出。我已经尝试了以下方法,到目前为止没有任何东西对我有用。请帮我解决这个问题。
let gestureArray = NamTxtBoxVal.gestureRecognizers
var tapGesture = UITapGestureRecognizer()
for idxVar in gestureArray!
if let tapVar = idxVar as? UITapGestureRecognizer
if tapVar.numberOfTapsRequired == 2
tapGesture = tapVar
NamTxtBoxVal.removeGestureRecognizer(tapGesture)
let doubleTap = UITapGestureRecognizer(target: self, action: #selector(namFnc(_:)))
doubleTap.numberOfTapsRequired = 2
doubleTap.delegate = self
tapGesture.requireGestureRecognizerToFail(doubleTap)
NamTxtBoxVal.addGestureRecognizer(doubleTap)
我也试过了:
func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool
return false
【问题讨论】:
【参考方案1】:我知道你这样做的唯一方法是
-
在 UITextField 后面放一个 UIView
设置 textField 的 userInteractionEnabled = false
向 UIView 添加双击手势
这将允许您在 TextField 区域上注册双击,而不会弹出任何键盘或进入编辑模式。
不确定双击后您打算如何处理 textField,但此时您应该能够以编程方式处理大部分内容。
代码如下:
class ViewController: UIViewController
@IBOutlet weak var myViewBehindMyTextField: UIView!
@IBOutlet weak var myTextField: UITextField!
override func viewDidLoad()
super.viewDidLoad()
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(ViewController.myTextFieldTapped(_:)))
tapGesture.numberOfTapsRequired = 2
myViewBehindMyTextField.addGestureRecognizer(tapGesture)
func myTextFieldTapped(sender: UITapGestureRecognizer)
print("Double tapped on textField")
【讨论】:
在您的情况下,单击一次的 TextField 编辑将消失,这是我需要的。 哦,不知道您需要单击一下。对不起。在这种情况下,我不知道如何在键盘出现并迅速消失的情况下执行此操作。 @SujayUN 的一个想法是在 UITextField 上方放置一个 clearColor UIView。然后让 UIView 仅在单击时将点击传递给 UITextField,并让 UIView 相应地处理双击。 我也有平移手势来移动屏幕周围的文本字段,所以移动时都很难处理以上是关于Ios Swift Override 双击 UItextField的主要内容,如果未能解决你的问题,请参考以下文章
为 iOS [Swift、iOS 15] 编写 PDF 查看器时无法激活三次轻击手势
(细节控)swift3.0与融云IMKIT开发问题(一部分) override func onSelectedTableRow Method does not override any method
Swift教程_swift常见问题(0005)_完美解决Cannot override 'dealloc'异常