【发布时间】:2026-02-24 10:40:02
【问题描述】:
我知道很多问题都针对此类问题得到了解答,但就我而言,常见的答案不起作用。
我有一个自定义视图,它是一个小视图,显示在活动文本字段上方以显示剪贴板数据,因此如果用户想要该文本字段中的数据,请点击我的自定义视图,以便剪贴板文本自动粘贴到该文本字段中。
当页面上只有一个 textField 时,一切正常。但如果我添加另一个 textField,此自定义视图无法检测到正确的 textField 以将文本粘贴到其中。
这是我在 customView 中检测当前文本字段的代码
private func addTapGesture() {
let tap = UITapGestureRecognizer(target: self, action: #selector(tapAction))
tap.cancelsTouchesInView = true
tap.delegate = self
window?.addGestureRecognizer(tap)
}
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
if touch.view!.frame.contains(subviews.first!.frame) {
tapComple?(true)
} else {
tapComple?(false)
}
return true
}
我知道 * 上的其他答案已经在使用这个:
if touch.view == self
但在我的情况下它不起作用......
【问题讨论】:
-
那么当输入焦点改变时,你改变小自定义视图的框架以与输入重叠?如果是这样,请将 gr 添加到自定义视图中,并为自定义视图提供一个属性,该属性设置为刚刚被框住的输入。那么您要查找的视图将是
touch.view.theInputIAmFramedOver。 -
您需要检测这是哪个视图,因此这是哪个文本字段。
-
@danh 当输入焦点改变时,我删除我的视图并创建一个新的!我无法理解你在说什么......对不起。你检查我的演示项目了吗?
-
@matt 是的,当然...感谢您的帮助!
标签: swift uiview uikit uitapgesturerecognizer