Cocoa touch 如何从其他触摸事件中识别按钮触摸事件
我有一个应用程序,用户可以在其中与许多对象进行交互。这些是几个Cocoa touch 如何从其他触摸事件中识别按钮触摸事件,cocoa-touch,uiimageview,uibutton,touch,Cocoa Touch,Uiimageview,Uibutton,Touch,我有一个应用程序,用户可以在其中与许多对象进行交互。这些是几个ui按钮、几个ui标签和许多ui图像视图 所有交互的焦点都集中在触摸UIImageView对象上。通过触摸,我可以移动图像,告诉他们做这个或那个。然而,我目前的障碍在于知道如何正确地让应用程序区分当我触摸ui按钮时发生的触摸 为什么??Touchs Start事件中的逻辑仅适用于UIImageView,但是,当我触摸按钮或任何其他对象时,应用程序会将触摸视为发生在UIImageView对象上 因此,我的方法可以归结为:是否有一种好方法
ui按钮
、几个ui标签
和许多ui图像视图
所有交互的焦点都集中在触摸UIImageView
对象上。通过触摸,我可以移动图像,告诉他们做这个或那个。然而,我目前的障碍在于知道如何正确地让应用程序区分当我触摸ui按钮时发生的触摸
为什么??Touchs Start事件中的逻辑仅适用于UIImageView
,但是,当我触摸按钮或任何其他对象时,应用程序会将触摸视为发生在UIImageView
对象上
因此,我的方法可以归结为:是否有一种好方法可以识别UIButton
、UIImageView
、UILabel
对象是否发生了触摸?这样我就可以从相关的触摸中过滤掉我应用程序中不相关的触摸
编辑:
下面的代码概述了我如何捕获触摸事件,但是我不知道如何从触摸事件中知道我触摸的是按钮还是视图
touch = [touches anyObject];
touchLocation = [touch locationInView:[self view]];
在带有触摸事件的视图上调用hitTest:withEvent:
,以获取实际被触摸的视图。然后,您可以使用isKindOfClass:
检查它是什么类型的视图,并做出相应的响应。在具有触摸事件的视图上调用hitTest:withEvent:
,以获取实际被触摸的视图。然后,您可以使用isKindOfClass:
检查它是什么类型的视图,并做出相应的响应。您可以使用以下方法:-
- (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已经给了你解释了
您可以使用以下方法:-
- (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已经给了你解释了
要知道是否按下了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
}
}
要知道是否按下了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
}
}
显示您的触摸处理代码。您是否正在进行点击测试以找到触摸视图?代码非常复杂,因为它基于UIImageView处理和捕获触摸,UIImageView工作正常。问题是我不知道如何区分触摸UIImage和触摸UIButton。触摸事件是否包含一种识别方法?手势识别器:shouldReceiveTouch:如何从手势识别器代理引用中识别;“在触摸开始之前调用此方法:在手势识别器上为新触摸调用withEvent:。”您可以使用此方法在识别器获取任何不需要的触摸之前过滤掉它们。我感觉这对你来说太晚了,但也许它会起作用。显示你的触摸处理代码。您是否正在进行点击测试以找到触摸视图?代码非常复杂,因为它基于UIImageView处理和捕获触摸,UIImageView工作正常。问题是我不知道如何区分触摸UIImage和触摸UIButton。触摸事件是否包含一种识别方法?手势识别器:shouldReceiveTouch:如何从手势识别器代理引用中识别;“在触摸开始之前调用此方法:在手势识别器上为新触摸调用withEvent:。”您可以使用此方法在识别器获取任何不需要的触摸之前过滤掉它们。我感觉这对你来说太晚了,但也许它会起作用。我会研究这个解决方案,虽然它相当广泛。是否有任何方法可以使用上述方法过滤掉仅在UIImageView对象中发生的接触?我以前从未使用过这种方法。我也在度假,上网有限,这就是为什么我回信迟到的原因。@AGE抱歉,这没有什么特别的。。但是你也可以检查这个答案。。我会研究这个解决方案,尽管它非常广泛。是否有任何方法可以使用上述方法过滤掉仅在UIImageView对象中发生的接触?我以前从未使用过这种方法。另外,我正在度假,网络访问有限,这就是为什么我回信迟到的原因。@AGE抱歉,这没有什么特别的。。但是你也可以检查这个答案。。