我正在尝试检查屏幕上的特定区域是否发生了点击。我已经设置了一个 TapGestureRecognizer,这是我现在拥有的代码:
func handleTap(tap: UITapGestureRecognizer) {
var point = tap.locationInView(self.view)
println("tapped")
if (tap.state == UIGestureRecognizerState.Ended)
{
if (CGRectContainsPoint(self.Region.frame, point)) {
println("touch")
var y = kbHeight - textYoutube.center.y
youTextConst.constant += y
}
}
}
应用程序识别了点击但不识别特定区域的点击,代码有什么问题?
更新
我不知道这是否重要,但 Region 是一个 TextView
最佳答案
(注意:我假设 self.Region
是一个 UIView。你没有在你的问题中解释它是什么,所以我不得不猜测它可能是什么是。顺便说一句,请不要使用大写字母作为属性名称。我这样做只是为了让您轻松匹配您自己的代码。)
想想坐标系。你说
var point = tap.locationInView(self.view)
这意味着点
在self.view
的坐标系中。但如果您要调用 CGRectContainsPoint,那是错误的坐标系。在你弄清楚point
和self.Region
之间的关系之前,你需要让point
和self在同一个坐标系中.地区
:
point = self.Region.convertPoint(point, fromView:self.view)
现在可以使用self.Region.bounds
,它与point
的新值在同一个坐标系中:
if CGRectContainsPoint(self.Region.bounds, point)
关于ios - 如何检查点击是否发生在特定位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28902985/