iOS知道什么时候touchesEnded触摸某些视图顶部

时间:2015-02-17 01:38:36

标签: ios touch

我必须做一些"对齐网格"行为,

我有一个拖动的图像"精灵",但我需要" snap"如果触摸位于该按钮之上,则该精灵到某个按钮,

所以我怎么知道touchesEnded是否在某个按钮之上, 这里是我的代码,但我不知道什么时候触及在butotn顶部结束

 - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{    
    UITouch *touched = [[event allTouches] anyObject];
    CGPoint location = [touched locationInView:touched.view];

    CGRect recta = touched.view.frame;

    if (CGRectIntersectsRect(recta, self.button_1.frame)) {
        DLog(@"intersected");
    }

}

所以这不会发生, 可以吗?

或者我是否必须检查我自己在按钮框架X和Y位置上完成触摸的X和Y位置?

欢呼声

2 个答案:

答案 0 :(得分:1)

如果你传递给它的两个矩形相交,你可以使用返回YES的CGRectIntersectsRect。

答案 1 :(得分:1)

touching.view是触摸开始的视图。您想知道触摸结束的位置是否位于特定按钮的顶部。您可以通过检查触摸相对于按钮的位置是否在按钮的边界内来完成此操作。

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *touched = [[event allTouches] anyObject];
    CGPoint locationRelative = [touched locationInView:self.button_1];

    if (CGRectContainsPoint(self.button_1.bounds, locationRelative)) {
        DLog(@"on top of button_1");
    }
}