1

我正在使用下面的代码来尝试获取触摸的位置,但它只能在按钮之外工作。例如。如果触摸在按钮之外,它会打印控制台行,但如果不是,它就不起作用。有什么办法解决这个问题?这是代码:

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

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

谢谢

4

3 回答 3

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);
}

一旦你得到按钮内的接触点,你就可以计算出超级视图中的接触点。

于 2013-09-07T16:53:13.830 回答
0

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

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

于 2013-09-07T16:44:43.737 回答
0

您可以尝试UIButtonsaddTarget:action:forControlEvents:使用控制事件掩码,包括. UIControlEventTouchUpInside

于 2013-09-07T17:23:46.170 回答