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

标签 ios swift uitextfield uitapgesturerecognizer

在我的类里面,我有 11 个 UITapGestureRecognizers 数组 textViewRecognizer 附加到数组 boxArray 中的 100 个 UITextFields 中的 11 个。当点击包含 UIGestureRecognizer 的文本字段时,它会运行 tappedTextView,我会在其中尝试获取第一响应者的索引。

但是,由于事情的执行顺序有些奇怪,操作函数只给我前一个第一响应者的第一响应者到刚刚被点击的那个。

此外,我什至必须双击才能选择我想要的文本字段!我需要使用 tap 函数而不是文本委托(delegate),所以这真让人头疼。

我有...

    @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 个文本字段中的 11 个以使其成为点击识别器(我将在这里使用常规的 for 循环)

for i in 0...10 {
         boxArray[i]?.addGestureRecognizer(textFieldTapRecognizer[i])
}
  1. 在完成点击后,我是否可以让它给我实际的第一响应者?

  2. 有没有绕过双击来选择具有 UITapGesture 的文本字段?

非常感谢任何帮助。

已编辑:正确命名的函数

最佳答案

听起来您想删除 UITextView 上的自动编辑行为。您可以使用 textViewShouldBeginEditing(_ textView: UITextView) -> Bool UITextViewDelegate 方法对其进行更多控制,documented here .

如果您为该方法返回 false,这应该避免需要双击才能到达您的手势识别器。根据您的用例,您可以通过为要实际编辑的 TextView 返回 true 来“允许”点击转到 TextView 。

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

关于ios - 文本字段上的 UITapGestureRecognizer 与预期不符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50177364/

相关文章:

ios - NSString 哈希冲突不会弄乱 NSDictionary

ios - 每个 Cell 需要有一个部分 - Parse 和 Swift

ios - 从 pageViewController 执行 segue

ios - CloudKit 中的 CKNotification 和 CKQueryNotification 有什么区别?

ios - 约束引用常量不起作用

ios - UIView AnimationWithDuration 调用两次时第二次不起作用

ios - 如何检测 UIWebView 上的 DOM 加载事件?

ios - 在 Swift 中选择 UIPickerView 时如何隐藏键盘

iphone - 如何在 tabBar 按钮的操作上从一个文本字段移动到下一个文本字段

javascript - iPad 2 上的 Safari 动态加载图像导致内存泄漏