use*_*582 15 iphone objective-c ipad uigesturerecognizer uipangesturerecognizer
我有一个图像类型的对象,我正在使用UIPanGestureRecognizer移动,我需要在对象到达某个帧时停止识别UIPanGestureRecognizer.
UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(move:)];
[panRecognizer setMinimumNumberOfTouches:1];
[panRecognizer setMaximumNumberOfTouches:1];
[panRecognizer setDelegate:self];
[templatePhotoPlaceholderView addGestureRecognizer:panRecognizer];
-(void)move:(UIPanGestureRecognizer *)gestureRecognizer
{
CGPoint translatedPoint = [gestureRecognizer translationInView:templatePhotoPlaceholderView];
if([gestureRecognizer state] == UIGestureRecognizerStateBegan) {
_firstX = [imageview center].x;
_firstY = [imageview center].y;
}
translatedPoint = CGPointMake(_firstX+translatedPoint.x, _firstY+translatedPoint.y);
//NSLog(@" Move center point :%@", NSStringFromCGPoint(translatedPoint));
[imageview setCenter:translatedPoint];
}
Run Code Online (Sandbox Code Playgroud)
我怎么能这样做?
jba*_*100 23
UIGestureRecognizers具有启用的属性.文档:
禁用手势识别器,使其不接收触摸.默认值为YES.如果在手势识别器当前正在识别手势时将此属性更改为"否",则手势识别器将转换为已取消状态.
编辑:
只需将enabled属性设置为NO即可.
gestureRecognizer.enabled = NO;
Run Code Online (Sandbox Code Playgroud)
der*_*iuk 13
当您需要阻止UIPanGestureRecognizer识别手势时,您只需将此代码行(如jbat100所述)放入-(void)move:(UIPanGestureRecognizer *)gestureRecognizer:
gestureRecognizer.enabled = NO;
Run Code Online (Sandbox Code Playgroud)
在此行之后,您的gestureRecognizer状态设置为 "UIGestureRecognizerStateCancelled"
然后只需在-(void)move:(UIPanGestureRecognizer *)gestureRecognizer函数中添加几行:
if ([gestureRecognizer state] == UIGestureRecognizerStateCancelled) {
gestureRecognizer.enabled = YES;
}
Run Code Online (Sandbox Code Playgroud)
并且您将能够使用手势识别器
编辑:
这是代码片段:
- (void)move:(UIPanGestureRecognizer *)gestureRecognizer {
BOOL cancelPanGesture = YES;
if (cancelPanGesture) {
/*
After this line gesture recognizer will be disabled, state will be UIGestureRecognizerStateCancelled
and this method (move:) will fire one more time.
*/
gestureRecognizer.enabled = NO;
}
if (gestureRecognizer.state == UIGestureRecognizerStateCancelled) {
gestureRecognizer.enabled = YES;
}
}
Run Code Online (Sandbox Code Playgroud)
设置pangesture.delegate = self,并实现委托方法
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
//return NO when you reach the frame
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14230 次 |
| 最近记录: |