UIPanGestureRecognizer を使用して画面の上部からビューを移動すると、奇妙な問題が発生します。シミュレーターではすべてが完璧に機能しますが、実際のデバイスでは、タッチするとビューが消えます。
- (IBAction)handlePan:(UIPanGestureRecognizer *)recognizer {
CGPoint start;
if (recognizer.state == UIGestureRecognizerStateBegan) {
start = [recognizer translationInView:self.view];
originCenter = recognizer.view.center.y;
}
if (recognizer.state == UIGestureRecognizerStateChanged) {
CGPoint translation = [recognizer translationInView:self.view];
if (down) {
if (originCenter + translation.y < self.view.center.y && self.view.center.y + translation.y < self.view.center.y) {
CGPoint move = CGPointMake(self.view.frame.size.width/2, originCenter-(start.y-translation.y));
[recognizer.view setCenter:move];
}
}else{
if (originCenter + translation.y < self.view.center.y && originCenter + translation.y > originCenter) {
CGPoint move = CGPointMake(self.view.frame.size.width/2, originCenter-(start.y-translation.y));
[recognizer.view setCenter:move];
}
}
}
if([recognizer state] == UIGestureRecognizerStateEnded || [recognizer state] == UIGestureRecognizerStateCancelled ){
if(recognizer.view.center.y > -40){
[recognizer.view setFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
down = TRUE;
}else{
[recognizer.view setFrame:CGRectMake(0, 80-self.view.frame.size.height, self.view.frame.size.width, self.view.frame.size.height)];
down = FALSE;
}
}
}
デバイス上の位置の計算に問題があり、ビューが画面の外に移動する可能性があるということが頭に浮かびます。それは可能ですか?