Я хочу создать анимированное меню.
- сначала он скрыт за пределами экрана
- когда пользователь нажимает на экран, он скользит в
- пользователь может коснуться его, и он что-то сделает
- затем через 3 с он будет скользить за пределами экрана
Но проблема в том, что это не ответ, когда я нажимаю на него. Почему?
пример кода: Весь код в моем классе UIView.
showing = NO;
box = [[UIView alloc] initWithFrame:CGRectMake(500,-200,200,200)];
box.backgroundColor = [UIColor redColor];
UITapGestureRecognizer *tapBox = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapMenuHandler:)] autorelease];
[box addGestureRecognizer:tapBox];
[self addSubView:box];
и
-(void) tapMenuHandler: (UIView *)obj {
//Do something
NSLog(@"tap box");
}
и
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
if (!showing) {
box.frame = CGRectMake(500, -200, 200, 200);
[UIView animateWithDuration:0.5f delay:0.3f options:(UIViewAnimationOptionAllowUserInteraction) animations:^{
box.frame = CGRectMake(500, 200, 200, 200);
} completion:^(BOOL finished) {
showing = YES;
[UIView animateWithDuration:0.5f delay:3.0f options:(UIViewAnimationOptionAllowUserInteraction) animations:^{
box.frame = CGRectMake(500, -200, 200,200);
} completion:^(BOOL finished) {
showing = NO;
}];
}];
}
}
Спасибо за вашу помощь и извините за мой английский :) 1026 *
Редактировать: подробнее
Я попытался установить начало источника моего ящика на экране (например, 500 600), он по-прежнему всегда реагирует при нажатии на начальную точку (500 600), даже если мой ящик перемещается в другое положение.
Обновление:
Я изменил свой способ перемещения окна за пределы экрана с помощью NSTimer, тогда он работает!
[UIView animateWithDuration:0.5f delay:0.3f options:UIViewAnimationOptionAllowUserInteraction animations:^{
box.frame = CGRectMake(500,200,200,200);
} completion:^(BOOL finished) {
isShowMenubar = YES;
//use NSTimer instead of delay
[NSTimer scheduledTimerWithTimeInterval:3.0f target:self selector:@selector(hideBox) userInfo:nil repeats:NO];
}];
и
-(void)hideBox {
[UIView animateWithDuration:0.5f delay:0.0f options:UIViewAnimationOptionAllowUserInteraction animations:^{
box.frame = CGRectMake(500,-200,200,200);} completion:^(BOOL finished) {
isShowMenubar = NO;
}];
}