내 UIView에 추가 한 UIPinchGestureRecognizer가 있는데, 이후 메인 뷰의 하위 뷰로 추가됩니다. 어떤 이유로 사용자가 처음 꼬집을 때 핀치 제스쳐가 감지되지 않지만 나중에 시도 할 때 핀치 제스처가 감지되지 않습니다. 아래 코드를 참조하십시오. 나중에 사용자가 눌렀을 때 nslog가 인쇄되기 전에 적어도 한 번은보기를 터치해야합니다.iOS 제스처 인식기는 사용자가 뷰를 터치 한 후에 만 시작합니다.
선언 :
self.pinchGesture = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(expandAction:)];
self.pinchGesture.scale = 0.0;
self.pinchGesture.delegate = self;
[self addGestureRecognizer:self.pinchGesture];
작업 :
위임-(void)expandAction:(UIPinchGestureRecognizer *)sender {
NSLog(@"pinch detected");
//stop reminding user
[self stopTimer:self.pinchExpandTimer];
[UIView animateWithDuration: 0.0
delay: 0.0
options: UIViewAnimationOptionTransitionCrossDissolve | UIViewAnimationOptionBeginFromCurrentState
animations: ^{
[self.pinchCircle1 removeFromSuperview];
[self.pinchCircle2 removeFromSuperview];
}
completion: ^(BOOL finished){
}];
//calculate progress
CGFloat progress = MIN(sender.scale/5, 1.0);
[self setPinchAnimationWithProgress:progress];
}
: 기본적으로
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#pragma mark UIGestureRecognizer Delegate
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
return YES;
}
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
return YES;
}
, 그것은 사용자 같은 느낌이 뷰가 다음 순서로 동작을 "선택"해야한다 그걸 가져 왔어. 보기에서 사용자 상호 작용을 활성화하거나 첫 번째 응답자를 설정하려고 시도했지만 여전히 작동하지 않습니다. 이 동작에서 다른 제스처 인식기를 사용하는 경우이보기에 사용되지만 다른 동작 인식기는 사용해야한다고 생각하지 않습니다. 누구든지 아이디어가 있습니까?
'duration'과 'delay'가 모두 0이기 때문에 실제로 애니메이션을 적용하지 않고 UIView animateWithDuration 블록을 사용한 이유가 있습니까? – n00bProgrammer
새 애니메이션이 영향을 미치는 요소에서 진행중인 애니메이션을 취소합니다. 이 경우 핀치 제스처가 감지되면 움직이는 항목을 제거하고 싶습니다. – kilakev