Inf*_*ies 12 iphone objective-c uigesturerecognizer
我想在我的iPhone应用程序中处理旋转手势并在此期间旋转imageView.在手势结束时,我想旋转到imageView的固定位置.所以即.如果我将imageView从0弧度旋转到M_PI/2弧度,但在某个中途,我以手势结束.结束后我想测试角度,如果它接近M_PI/2然后将其设置为M_PI/2,否则为0.
这是我的代码我是如何尝试这样做的:
我创建并添加识别器到我的视图.
UIGestureRecognizer *recognizer = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(gestureRecognized:)];
recognizer.delegate = self;
[self addGestureRecognizer:recognizer];
[recognizer release];
Run Code Online (Sandbox Code Playgroud)
代表方法:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
if (_imageView) {
return YES;
}
return NO;
}
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
return YES;
}
Run Code Online (Sandbox Code Playgroud)
手势识别方法:
- (void)gestureRecognized:(UIRotationGestureRecognizer *)recognizer {
_imageView.transform = CGAffineTransformMakeRotation(recognizer.rotation);
}
Run Code Online (Sandbox Code Playgroud)
这些方法是有效的,但这是我试图结束手势的方法.这不起作用:
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"gesture end");
}
Run Code Online (Sandbox Code Playgroud)
同样随着变换我有一点问题.有时它会回到0弧度.
任何建议都是受欢迎的.谢谢!
Inf*_*ies 25
我在其他论坛上找到了答案.我希望这也能帮助别人.回答:
您可以通过在操作方法中检查UIRotationGestureRecognizer的状态来检测手势的结束.如果[gestureRecognizer state] == UIGestureRecognizerStateEnded则完成.如果某些东西导致它被取消(例如,一个电话进来),那么你会看到它以UIGestureRecognizerStateCancelled结束.
如果要将识别器的旋转直接应用于视图而不是将其视为前一个位置的增量,可以设置识别器的旋转,其状态为UIGestureRecognizerStateBegan,然后它将计算该值的偏移量,您可以直接应用它们.这只需要你记住上次结束时的旋转,然后当识别器的状态为UIGestureRecognizerStateBegan时,你可以执行类似[gestureRecognizer setRotation:lastAppliedRotation]的操作.
归档时间: |
|
查看次数: |
13505 次 |
最近记录: |