如何使用touchesEnded在按钮内获取触摸的位置

时间:2013-09-07 16:25:52

标签: ios objective-c cocoa-touch

我正在使用下面的代码尝试获取触摸的位置,但它只能在按钮之外工作。例如。如果触摸在按钮之外,它会打印控制台线,但如果没有,则不起作用。这是什么解决方案? 这是代码:

    - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {

        UITouch *touch = [touches anyObject];
        CGPoint touchPoint = [touch locationInView:self.appleClickedButton];
        NSLog(@"%f",touchPoint);
        NSLog(@"%f",touchPoint); 
    }

由于

3 个答案:

答案 0 :(得分:1)

以下是点击UIButton时如何获取触摸位置的方法。 (只需确保将TouchUpInside事件与IBAction链接)

- (IBAction)buttonTapped:(id)sender forEvent:(UIEvent*)event
{
    UIView *button = (UIView *)sender;
    UITouch *touch = [[event touchesForView:button] someObject];
    CGPoint touchPointInButton = [touch locationInView:button];
    NSLog(@"Location in button: %f, %f", touchPointInButton.x, touchPointInButton.y);
}

获得按钮内的触摸点后,您可以计算超级视图中的触摸点。

答案 1 :(得分:0)

触摸按钮内部时。该事件已由按钮处理。包含按钮的视图不会获得触摸事件。

您可以创建从UIButton继承的自定义类并覆盖该方法,但请确保在超类中调用该方法,否则某些操作(如TouchUpInside将无法正常工作)。

答案 2 :(得分:0)

您可以使用包含UIButton的控制事件掩码尝试addTarget:action:forControlEvents: s UIControlEventTouchUpInside