我已在UITapGestureRecognizer
上实施了UIImageView
,它正在开始工作。在第一次点击时,我隐藏了该图像并开始动画。动画完成后,我再次显示图像。但是在设置setHidden:FALSE
后,我没有收到UIImageView
的点击事件。
以下是我正在使用的代码:
- (void)viewDidLoad{
[super viewDidLoad];
defaultDogView= [[UIImageView alloc] initWithFrame:CGRectMake(3, 270, 110, 210)];
[defaultDogView setImage:[UIImage imageNamed:@"dog1.png"]];
defaultDogView.userInteractionEnabled = YES;
[self addGestureRecognizersToPiece:defaultDogView];
[self.view addSubview:defaultDogView];
}
- (void)addGestureRecognizersToPiece:(UIImageView *)piece
{
NSLog(@"in Gesture");
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapPiece:)];
[tapGesture setDelegate:self];
[piece addGestureRecognizer:tapGesture];
[tapGesture release];
UILongPressGestureRecognizer *longPressGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressPiece:)];
[piece addGestureRecognizer:longPressGesture];
[longPressGesture release];
NSLog(@"%@", [piece gestureRecognizers]);
}
- (void)singleTapPiece:(UITapGestureRecognizer *)gestureRecognizer
{
NSLog(@"Image Tapped");
/** Hide the default Image and start the animation ***/
[defaultDogView setHidden:TRUE];
/***Animating the Dog***/
[dogArray addObject:[SpriteHelpers setupAnimatedDog:self.view numFrames:69 withFilePrefix:@"dog" withDuration:(12) ofType:@"png" withValue:0]];
dogView = [dogArray objectAtIndex:0];
//[self addGestureRecognizersToPiece:dogView];
[self performSelector:@selector(callBubbleUpdater) withObject:nil afterDelay:5.5];
}
-(void)showDogFrame{
NSLog(@"%@",[defaultDogView gestureRecognizers]);
[defaultDogView setHidden:FALSE];
defaultDogView.userInteractionEnabled = YES;
}
答案 0 :(得分:1)
当view
为hidden
或其alpha
组件zero
时,该视图将不会收到任何UIGestureRecognizers
。
如果您需要隐藏某些视图(我们将其命名为touchableView
),我可以建议您使用下一种方法,但希望它能够响应手势:
使用与backgroundView
相同的框架创建touchableView
:
UIView *backgroundView = [[UIView alloc] initWithFrame:touchableView.frame];
将backgroundView
的背景颜色设置为clearColor
:
backgroundView.backgroundColor = [UIColor clearColor];
重置touchableView
的位置:
CGRect frame = touchableView.frame;
frame.origin.x = 0;
frame.origin.y = 0;
禁用touchableView
的用户互动:
touchableView.userInteractionEnabled = NO;
将touchableView
作为子视图添加到backgroundView
:
[backgroundView addSubview:touchableView];
为backgroundView
添加适当的手势识别器。
添加backgroundView
以查看您想要的内容。
现在您可以隐藏touchableView
,但您仍会收到手势识别器。
我不测试这个,但我认为它应该有用。
答案 1 :(得分:0)
确定
隐藏UIImageView时。它没有收到任何触摸事件
为uiimageview设置alpha值