文本字段上的UITapGestureRecognizer与预期不符

在我的课程中,我在一个数组textViewRecognizer中有11个UITapGestureRecognizer,它连接到数组boxArray中的100个UITextField中的11个。 当点击包含UIGestureRecognizer的Textfield时,它会运行tappedTextView,我尝试获取第一个响应者的索引。

但是,由于对事物的执行方式有一些奇怪的顺序,动作函数只给我前一个第一响应者的第一个响应者。

此外,我必须双击甚至选择我要去的文本字段! 我需要使用tapfunction而不是文本代表,所以这真的很头疼。

我有…

@objc func tappedTextField(_ sender: UITapGestureRecognizer) { for i in 0...99 { if (boxArray[i]?.isFirstResponder)! { if let index = boxArray.index(of: boxArray[i]) { print(index) break } } } } 

在我的viewDidLoad我有

 for i in 0...10 { textFieldTapRecognizer[i].addTarget(self, action: #selector(self.tappedTextField(_:))) } 

在我的class上,我有

我想在100个textFields中设置11个,根据某些条件设置一个tap识别器(我将在这里使用常规for循环)

 for i in 0...10 { boxArray[i]?.addGestureRecognizer(textFieldTapRecognizer[i]) } 
  1. 无论如何,在制作水龙头之后,我能得到它给我实际的第一响应者吗?

  2. 无论如何都要绕过双击以选择具有UITapGesture的文本字段?

任何帮助是极大的赞赏。

编辑:正确命名的function

听起来你想删除UITextView上的自动编辑行为。 您可以使用textViewShouldBeginEditing(_ textView: UITextView) -> Bool UITextViewDelegate方法获取更多控制权, 此处记录在案 。

如果您为该方法返回false ,则应避免需要双击才能进入手势识别器。 根据您的使用情况,您可以通过为要实际编辑的textView返回true来“允许”点击转到文本视图。

虽然我不是100%清楚你问题的第一个响应者部分,因为如果没有启动它的编辑模式,textView将不会抓住第一响应者,这应该解决我相信的问题。 祝你好运!

我会在我的UITextView添加一个Tag ,并将UITextView设置为我的ViewController

然后我将添加以下Delegate方法:

 func textViewShouldBeginEditing(_ textView: UITextView) -> Bool { print("Textview tag: ", textView.tag) return false }