我有一个应用程序,用户可以在其中与许多对象进行交互。这些是UIButtons
,少数UILabels
和大量UIImageViews
。
所有交互的焦点都集中在触摸UIImageView
个对象上。触摸后我可以移动图像,告诉他们这样做。然而,我当前的障碍是知道如何正确地让应用程序区分触摸UIButton
时发生的触摸。
为什么呢?那么Touches Began事件中的逻辑仅适用于UIImageViews
,但是当我触摸按钮或任何其他对象时,该应用程序正在将触摸解释为{{1}对象。
因此,我的方法归结为:是否有一种很好的方法来确定UIImageView
,UIButton
,UIImageView
对象是否发生了触摸?这样我就可以从相关的应用程序中过滤掉我的应用程序中不相关的触摸。
修改:
下面的代码概述了我如何捕捉触摸事件,但是我不知道如何从触摸事件中知道它是一个按钮还是我触摸过的视图。
UILabel
答案 0 :(得分:1)
使用触摸事件在视图上调用hitTest:withEvent:
以获取实际触摸的视图。然后,您可以使用isKindOfClass:
来检查它是什么类型的视图并做出相应的响应。
答案 1 :(得分: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已经给你解释了它..
答案 2 :(得分: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
}
}