CGRectContainsPoint点虽然在帧内,但没有注册

时间:2014-08-21 23:21:40

标签: ios swift frame cgrect touchesbegan

我正在为Swift中的一些练习组合一个自定义键盘。键盘上的按钮都具有比按钮框架本身更大的触摸区域。为此,我在自定义按钮类中添加了一个名为 touchFrame CGRect 类型的变量。我会为我的所有实例手动设置 touchFrame 变量。然后我在 touchesBegan 中使用 CGRectContainsPoint 来确定是否触摸了任何 touchFrame 矩形。

这里我给了按钮实例一个值' touchFrame变量:

      button01.touchFrame = CGRectMake(0.0, 0.0, 32.0, 59.0)
      button02.touchFrame = CGRectMake(32.0, 0.0, 32.0, 59.0)
      button03.touchFrame = CGRectMake(64.0, 0.0, 32.0, 59.0)

这是touchesBegan代码:

override func touchesBegan(touches: NSSet!, withEvent event: UIEvent!) {

        var touchPoint: UITouch = touches.anyObject() as UITouch

        characterButtonArray = [button01, button02, button03]

        for button: CharacterButton in characterButtonArray {

            if CGRectContainsPoint(button.touchFrame, touchPoint.locationInView(self.view))   {

                characterButtonTouchInside(button)

            }
        }   
    }

在下图中,红线显示 touchFrame 矩形的区域,这是应该触发 characterButtonTouchInside(按钮)的区域,如上面的代码所示,但相反,该功能仅在您触摸按钮内时触发。框架(下图中的白色按钮)。

enter image description here

我不清楚为什么会这样。 keyboardViewController UIInputViewController 的子类的事实会产生什么影响吗?

任何帮助都会非常感激。

0 个答案:

没有答案