0

我有一个应用程序,用户可以在其中与许多对象进行交互。这些是几个UIButtons,几个UILabels和很多UIImageViews

所有交互的焦点都围绕着触摸UIImageView对象。只需轻轻一按,我就可以移动图像,告诉他们这样做或那样做。但是,我目前的障碍是知道如何正确地让应用程序区分我触摸UIButton.

为什么?好吧,Touches Began 事件中的逻辑仅适用于UIImageViews,但是当我触摸按钮或任何其他对象时,应用程序会将触摸解释为好像发生在UIImageView对象上一样。

所以,我的方法归结为:有没有一种好的方法来识别是否对UIButton, UIImageView,UILabel对象发生了触摸?这样我就可以从相关的触摸中过滤掉我的应用程序中不相关的触摸。

编辑

下面的代码概述了我如何捕获触摸事件,但是我不知道如何从触摸事件中知道我触摸的是按钮还是视图。

touch = [touches anyObject];
touchLocation = [touch locationInView:[self view]];
4

3 回答 3

1

使用触摸事件调用hitTest:withEvent:视图以获取实际被触摸的视图。然后您可以使用isKindOfClass:它来检查它是什么类型的视图并做出相应的响应。

于 2013-08-05T06:31:09.600 回答
1

您可以使用此方法:-

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    if ([self pointInside:point withEvent:event]) {
      //You clicked inside the object
    }
    return [super hitTest:point withEvent:event]
}

并且wain已经给你解释过了..

https://stackoverflow.com/a/18051856/1865424

于 2013-08-05T07:35:21.590 回答
1

要知道 UIButton 是否被按下,请按照以下步骤操作:

-(void) touchBegan : (NSSet *) touches withEvent : (UIEvent *) even
{

 UITouch *touch = [touched anyObject];
 UIView *touchedView = [touch view];

 if([touchedView isMemberofClass : [UIButton class])
 {
   //do something when button is touched
 }
}
于 2013-08-28T10:05:18.360 回答