1
터치로 UIView를 화면에서 떼어 내고 터치 후을 터치 한 후 으로 돌아가고 싶습니다. 현재까지 :UIView 애니메이션 취소
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [[event allTouches] anyObject];
if ([touch view] == myMainView)
{
[disappearingView.layer removeAllAnimations];
[UIView animateWithDuration:0.5
delay:0
usingSpringWithDamping:0.7
initialSpringVelocity:0.2
options:UIViewAnimationOptionBeginFromCurrentState
animations:^
{
disappearingView.transform = CGAffineTransformMakeScale(0, 0);
}
completion:^(BOOL finished)
{
}];
}
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [[event allTouches] anyObject];
if ([touch view] == myMainView)
{
[UIView animateWithDuration:0.5
delay:1
usingSpringWithDamping:0.7
initialSpringVelocity:0.2
options:UIViewAnimationOptionBeginFromCurrentState
animations:^
{
disappearingView.transform = CGAffineTransformMakeScale(1, 1);
}
completion:^(BOOL finished)
{
}];
}
}
위 코드는 지금까지 정상적으로 작동합니다. 그러나 1 초의 지연이 만료되기 전에 사용자가 손가락을 들어 올려 다시 터치하면 터치가 내려져도 사라지는보기가 다시 나타납니다. 무작위로 아래 위로 터치하면 애니메이션이 매우 일치하지 않습니다.
보기가 1 초 후에 만 돌아오고 전혀 접촉하지 않기를 바랍니다.
나는 이것을 시도하고있다. DELAY의 모범 사례는 무엇입니까? 애니메이션을 지연시켜야합니까? 또는 do [self performSelector : @selector (touchUpAnimations) withObject : nil afterDelay : 1]; ? – Gizmodo
큰 차이는 없다고 생각합니다. 필자가 선호하는 것처럼 애니메이션을 지연 시키지만, 다른 방법을 사용하면 다른 터치가 발생하면 "아무것도하지 않음"애니메이션을 피할 수 있습니다. – pbasdf