我有一个scrollView
,其中添加了一些imageViews
我希望在scrollView
滚动时,imageViews
也应该获得触摸事件。
但事实并非如此。
一次只发生两件事中的一件。
scrollView
滚动但imageViews
没有触摸事件
或imageViews
获取触摸事件,而scrollView
不会滚动。
不能同时发生这两件事。 请建议。
答案 0 :(得分:1)
您可以使用“点击手势识别器”在图像添加到滚动视图时获取图像上的事件。 的修改
您可以参考以下代码:
-(void)yourGestureRecognizer
{
UITapGestureRecognizer *yourTapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
[yourImageView addGestureRecognizer:yourGestureRecognizer];
[yourGestureRecognizer release];
}
您可以点击此处:
-(void)handleTap:(UIGestureRecognizer *)sender{
UIImageView *imageView = (UIImageView *)sender.view;
switch (imageView.tag)
{
case 1:
m_pYourInstance=[[ViewController alloc]initWithNibName:@"ViewController" bundle:nil];
[self.navigationController pushViewController:XXXXX animated:YES];
break;
}
希望这会有所帮助!!
答案 1 :(得分:1)
我知道这是在不久前发布的,但是......
默认情况下,UIImageView对象的属性userInteractionEnabled设置为NO。这可能是触摸没有注册的原因。这让我不止一次地绊倒了它,这是只有经验才有帮助的小事之一。
将其设置为YES,看看是否修复了它。
答案 2 :(得分:0)
使用UIGestureRecognizer。将识别器添加到图像视图中。
如果您要定位一些旧的iOS版本,请查看此link。
答案 3 :(得分:0)
使用UIButtons并在其上设置背景图像。这是用于布局UIScrollView子视图的循环:
for (int i = 0; i < [images count]; i++) {
CGRect aFrame = ...;
UIButton *button = [[[UIButton alloc] initWithFrame:aFrame] autorelease];
[button setImage:[images objectAtIndex:i] forState:UIControlStateNormal];
button.tag = i;
[button addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
[scrollView addSubview:button];
}
在这里处理触摸事件:
- (void)buttonClicked:(id)sender {
UIButton *button = (UIButton *)sender;
[self performActionWithImageAtIndex:[images objectAtIndex:button.tag]];
}
这将省略创建额外手势识别器的需要,并将减少样板工作量。
- 编辑
你的UIImageViews没有检测到触摸的另一个原因是你在代码中创建它们而忘记将userInteractionEnabled设置为YES。
答案 4 :(得分:0)
Tap Gesture Recognizer
,如:
<。>文件中的
@interface CustomView : UIImageView
{
// your variables
}
<。>文件中的
//when you create an instants of your image view UITapGestureRecognizer will added in all your instants.
- (id)initWithFrame:(CGRect)frame
{
if ((self = [super initWithFrame:frame]))
{
// add Gesture for tapping
UITapGestureRecognizer* tap = [[UITapGestureRecognizer alloc] initWithTarget:self
action:@selector(tap:)];
tap.numberOfTapsRequired = 1;
[self addGestureRecognizer:tap];
}
return self;
}
然后在.m文件中添加委托方法
- (void) touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event
{
UITouch *touch = [touches anyObject];
}
现在在您的自定义单元格中,使用Tap Gesture Recognizer添加自定义图像视图
希望它能帮到你......