ios - 如何检查点击是否发生在特定位置

标签 ios swift xcode6 uitapgesturerecognizer

我正在尝试检查屏幕上的特定区域是否发生了点击。我已经设置了一个 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,那是错误的坐标系。在你弄清楚pointself.Region之间的关系之前,你需要让pointself在同一个坐标系中.地区:

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/

相关文章:

ios - 进入和退出编辑模式时防止自定义单元格中的元素出现动画

ios - Swift 和 UILabel - fatal error : unexpectedly found nil while unwrapping an Optional value

ios - 如何快速检测文本字段是否为空?

ios - 无法与 UIStepper 交互

ios - 在 ios 中设置在 ipad 设备中设计良好的约束的好方法或好做法是什么

swift - 我如何获得边界 UIImageView Swift

ios - iPhone 5 iOS 6 模拟器 imagePicker DidFinish 不工作

ios - @2x 图像太大,在视网膜显示器上超出范围

swift - 按下按钮时如何添加到数组?

ios - 返回数组的 Swift 方法