我正在使用下面的代码尝试获取触摸的位置,但它只能在按钮之外工作。例如。如果触摸在按钮之外,它会打印控制台线,但如果没有,则不起作用。这是什么解决方案? 这是代码:
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
CGPoint touchPoint = [touch locationInView:self.appleClickedButton];
NSLog(@"%f",touchPoint);
NSLog(@"%f",touchPoint);
}
由于
答案 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
。