[英]detect a touch down event on UIImageView(s)
我在UIView上放置了4个UIImageView,并将它命名为
UIImageView myImg1 = [[UIImageView alloc] init];
UIImageView myImg2 = [[UIImageView alloc] init];
UIImageView myImg3 = [[UIImageView alloc] init];
UIImageView myImg4 = [[UIImageView alloc] init];
我怎么能告诉编译器我刚刚触及UIImageView 1或UIImaveView 2.如果我只能使用UIImageView来完成这个任务,而不是按钮。 请指导我这个问题。 谢谢
一个时尚的解决方案是使用UIGestureRecognizer对象:
在你的loadView方法中(或你编写UIImageView (s)绘图的任何地方......):
UITapGestureRecognizer *tapRecognizer;
UIImageView *anImageView = [[UIImageView alloc] initWithFrame:CGRectMake(20, 20, 100, 100)];
[anImageView setTag:0]; //Pay attention here!, Tag is used to distinguish between your UIImageView on the selector
[anImageView setBackgroundColor:[UIColor redColor]];
[anImageView setUserInteractionEnabled:TRUE];
tapRecognizer = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imageViewDidTapped:)] autorelease];
tapRecognizer.numberOfTapsRequired = 1;
[anImageView addGestureRecognizer:tapRecognizer];
[contentView addSubview:anImageView];
[anImageView release];
UIImageView *anotherImageView = [[UIImageView alloc] initWithFrame:CGRectMake(80, 180, 100, 100)];
[anotherImageView setTag:1]; //Pay attention here!, Tag is used to distinguish between your UIImageView on the selector
[anotherImageView setBackgroundColor:[UIColor greenColor]];
[anotherImageView setUserInteractionEnabled:TRUE];
tapRecognizer = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imageViewDidTapped:)] autorelease];
tapRecognizer.numberOfTapsRequired = 1;
[anotherImageView addGestureRecognizer:tapRecognizer];
[contentView addSubview:anotherImageView];
[anotherImageView release];
这是一个简单的imageViewDidTapped: sample方法,可用于区分上面的两个示例UIImageView对象:
- (void)imageViewDidTapped:(UIGestureRecognizer *)aGesture {
UITapGestureRecognizer *tapGesture = (UITapGestureRecognizer *)aGesture;
UIImageView *tappedImageView = (UIImageView *)[tapGesture view];
switch (tappedImageView.tag) {
case 0:
NSLog(@"UIImageView 1 was tapped");
break;
case 1:
NSLog(@"UIImageView 2 was tapped");
break;
default:
break;
}
}
您应该考虑使用tag
属性。 为每个图像指定一个唯一tag
,然后使用此信息确定触摸的图像。 例如,设置标签
UIImageView myImg1 = [[UIImageView alloc] init];
myImg1.tag = 1;
当你收到img
的触摸时,请致电
img.tag
检索标签。
UITapGestureRecognizer *singleFingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
singleFingerTap.numberOfTapsRequired = 1;
[myImg1 addGestureRecognizer:singleFingerTap];
[myImg2 addGestureRecognizer:singleFingerTap];
[singleFingerTap release];
和行动方法
-(void)handleSingleTap:(UIGestureRecognizer*)sender{
//your code here
}
你可以这样做。
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
CGPoint touchLocation = [touch locationInView:self.view];
if(CGRectContainsPoint(myImg1.view.frame,touchLocation))
{
NSLog(@" Image 1");
}
else if(CGRectCont..
注意......如果点位于多个图像视图中,则会输出NSLog ..在这种情况下..检查哪个图像视图位于顶部..
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.