在我的课程中,我在一个数组textViewRecognizer中有11个UITapGestureRecognizer,附加到数组boxArray中的100个UITextField中的11个 . 当点击包含UIGestureRecognizer的Textfield时,它会运行tappedTextView,我尝试获取第一个响应者的索引 .
但是,由于对事物的执行方式有一些奇怪的顺序,动作函数只给我前一个第一响应者的第一响应者 .
此外,我必须双击甚至选择我要去的文本字段!我需要使用tap功能而不是文本代表,所以这真的很头疼 .
我有...
@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(_:)))
}
在我的班上,我有
我想在100个textFields中设置11个,根据某些条件设置一个tap识别器(我将在这里使用常规for循环)
for i in 0...10 {
boxArray[i]?.addGestureRecognizer(textFieldTapRecognizer[i])
}
-
无论如何,在制作水龙头之后,我能得到它给我实际的第一响应者吗?
-
无论如何都要绕过双击以选择具有UITapGesture的文本字段?
任何帮助是极大的赞赏 .
编辑:正确命名的功能
2 回答
听起来你想删除
UITextView
上的自动编辑行为 . 您可以使用textViewShouldBeginEditing(_ textView: UITextView) -> Bool
UITextViewDelegate
方法documented here获取更多控制权 .如果您为该方法返回
false
,则应避免需要双击才能进入手势识别器 . 根据您的使用案例,您可以通过为想要实际编辑的textView返回true
来点击以转到文本视图 .虽然我不是100%清楚问题的第一个响应者部分,因为如果没有启动它的编辑模式,textView将不会 grab 第一响应者,这应该解决我相信的问题 . 祝好运!
我会将
Tag
添加到我的UITextView
并将UITextViewDelegate
设置为我的ViewController
.然后我将添加以下Delegate方法: