文本字段上的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]) }
-
无论如何,在制作水龙头之后,我能得到它给我实际的第一响应者吗?
-
无论如何都要绕过双击以选择具有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 }