1

我有一个 UIButton。当用户点击所述按钮时,如何获得手指的 x 坐标。我认为这将涉及 touchesBegan 但如果按钮上发生“touchesBegan”,我如何才能获得价值?如果有办法(不只是监视按钮的 x、y、宽度和高度并检查我的触摸是否在该区域),我是否需要禁用按钮的用户交互,以便代码可以处理它而不是内置xib的东西。谢谢!

4

1 回答 1

9

“点击”通常被认为是在按钮内部触地,然后在按钮内触地。您需要确定是否需要 touch-down-inside 事件或 touch-up-inside 事件(或两者)。

假设您想要 touch-down-inside 事件。在视图控制器中编写这样的方法:

- (IBAction)buttonWasTouched:(UIButton *)button forEvent:(UIEvent *)event {
    NSSet *touches = [event touchesForView:button];
    NSLog(@"button:%@ touches:%@", button, touches);
}

如果您在 nib 中创建按钮,请按住 control 并单击该按钮并将其“Touch Down”出口连接到buttonWasTouched:forEvent:您的视图控制器(可能是文件的所有者)上的操作。

如果您在代码中创建按钮,请addTarget:action:forControlEvents:向按钮发送一个以将其UIControlEventTouchDown事件连接到视图控制器的buttonWasTouched:forEvent:操作。

如果您想捕捉 touch-up-inside 事件,请在 nib 中连接其“Touch Up Inside”插座,或UIControlEventTouchUpInside在代码中使用。

于 2012-03-04T18:47:37.910 回答