标签: uipangesturerecognizer

UIPanGestureRecognizer没有顺利移动对象

我试图使用UIPanGestureRecognizer移动我的对象,但我似乎无法让它顺利移动.当我向特定方向移动并向相反方向移动时,它不会立即作出反应.我假设值可能有问题,因为它在" - >"方向为正,在"< - "方向为负.

我的代码如下:

- (void)panDetected:(UIPanGestureRecognizer *)panRecognizer
    {    
        CGPoint pointA = [panRecognizer locationInView:self.view];
        CGPoint pointB = [panRecognizer translationInView:self.view];

        if(panRecognizer.state == UIGestureRecognizerStateEnded ||
           panRecognizer.state == UIGestureRecognizerStateChanged) {     
            _camera.x += pointB.x * 0.0001f;
        }
    }
Run Code Online (Sandbox Code Playgroud)

有没有人有更合适的方法来解决这个问题?

提前致谢.

uikit uigesturerecognizer ios uipangesturerecognizer

1
推荐指数
1
解决办法
2445
查看次数

设置UILabel文本时使用UIPanGestureRecognizer进行翻译

我在将UILabel的文本设置为手势速度时,仅使用UIPanGestureRecognizer转换视图时遇到问题。

我已经成功地用这样的平移手势转换了视图(在IB的帮助下):

- (IBAction)handleGesture:(UIPanGestureRecognizer *)sender

{   
    CGPoint translation = [sender translationInView:self.view];

    sender.view.center = CGPointMake(sender.view.center.x + translation.x, sender.view.center.y + translation.y);

    [sender setTranslation:CGPointMake(0, 0) inView:self.view];
} 
Run Code Online (Sandbox Code Playgroud)

但是,当我在此方法中添加以下行时,视图停止平移,但UILabel随速度更新:

self.myLabel.text = [NSString stringWithFormat:@"%@", [NSNumber numberWithInt:[sender velocityInView:self.roundShape].y]];
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?

objective-c uilabel uipangesturerecognizer

1
推荐指数
1
解决办法
1765
查看次数

使用平移手势重置UIView的帧,无需硬编码起始值

我有一个附加到UIView的UIPanGestureRecognizer.我想要做的就是拖放到一个桶里.如果用户放开UIView并且它不在存储桶中,我希望它能够动画回原始的起始位置.我为UIPanGestureRecognizer调用的选择器是:

- (void)handleDragDescriptionView:(UIPanGestureRecognizer *)gestureRecognizer {
    UIView *panViewPiece = [gestureRecognizer view];
    CGRect originalFrame = CGRectMake(946, 20, 58, 30);

    CGPoint translation = [gestureRecognizer translationInView:panViewPiece];
    if (gestureRecognizer.state == UIGestureRecognizerStateBegan || gestureRecognizer.state == UIGestureRecognizerStateChanged) {
        panViewPiece.center = CGPointMake(panViewPiece.center.x + translation.x, panViewPiece.center.y + translation.y);

        [gestureRecognizer setTranslation:CGPointZero inView:panViewPiece.superview];
    }
    else if (gestureRecognizer.state == UIGestureRecognizerStateCancelled) {
        [UIView animateWithDuration:0.25 animations:^{
            self.dragDescriptionView.frame = originalFrame;
        }];
    }
    else {
        [UIView animateWithDuration:0.25 animations:^{
            self.dragDescriptionView.frame = originalFrame;
        }];
    }

}
Run Code Online (Sandbox Code Playgroud)

我想知道如果没有originalFrame方法的顶部我能做到这一点.我原本有

CGRect originalFrame = _dragDescriptionView.frame; 
Run Code Online (Sandbox Code Playgroud)

而不是硬编码,但它不会反弹.可能是因为我在拖动时正在更新该值.我并不特别喜欢硬编码值,但我不确定是否有办法解决这个问题.谢谢!

uiview ios uipangesturerecognizer

1
推荐指数
1
解决办法
2116
查看次数

删除UIButton的手势

UIGestureRecognizer用于平移,旋转,捏.但我正在申请整个观点.我需要删除子视图以外的按钮的手势.但是,当我使用泛按钮也影响.如何限制按钮从self.view移动.我使用下面的代码UIPanGestureRecognizer.

UIPanGestureRecognizer *dbpan = [[UIPanGestureRecognizer alloc] initWithTarget:self
                                                                        action:@selector(ondbPan:)];

[self.view addGestureRecognizer:dbpan];

[closeButton removeGestureRecognizer:dbpan];
Run Code Online (Sandbox Code Playgroud)

泛:

- (void)ondbPan:(UIPanGestureRecognizer *)gesture
{
    if ((gesture.state == UIGestureRecognizerStateChanged) ||
        (gesture.state == UIGestureRecognizerStateEnded)) {


        CGPoint offset = [gesture translationInView:self.view];

        CGPoint center = gesture.view.center;
        center.x += offset.x;
        center.y += offset.y;
        gesture.view.center = center;

        [gesture setTranslation:CGPointZero inView:self.view];

    }
}
Run Code Online (Sandbox Code Playgroud)

objective-c uibutton uigesturerecognizer ios uipangesturerecognizer

1
推荐指数
1
解决办法
1174
查看次数

在UIButtons上禁用UIPanGestureRecognizer

我添加了一个UIPanGestureRecognizerUIView,问题是当你在标签UIButton内的S UIPanGestureRecognizer仍处于启用状态.如何禁用UIPanGestureRecognizer按钮?

objective-c uibutton ios uipangesturerecognizer

1
推荐指数
1
解决办法
1290
查看次数

iOS Pan手势

我试图在平移时不要使我的平移手势垃圾邮件功能,它只在平移完成时播放一次功能,我已经在线看了所有并且找不到这样做的方法.有人有任何解决方案?

目前的代码如下:

UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget: self  action:@selector(didPan:)];
self.mapView.gestureRecognizers = @[panRecognizer];

- (void) didPan:(UIPanGestureRecognizer*) gestureRecognizer
{
    NSLog(@"DID PAN");
}
Run Code Online (Sandbox Code Playgroud)

objective-c uigesturerecognizer ios uipangesturerecognizer

1
推荐指数
1
解决办法
483
查看次数

什么是Swift相当于UIGestureRecognizerStateEnded?

我正试图检测平移手势何时结束.在Objective-C下,我会做类似以下的事情:

- (void)panGesture:(UIPanGestureRecognizer *)gesture {
    if (gesture.state == UIGestureRecognizerStateEnded) {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的Swift项目中,它无法识别UIGestureRecognizerStateEnded......也许我只需要导入不同的东西(?)

objective-c ios uipangesturerecognizer swift

1
推荐指数
1
解决办法
1559
查看次数

UIPanGestureRecognizer:在滑动结束时检测触摸位置

我在touchesEnded方法中调用了一个名为addProjectile的方法.addProjectile接收touchesEnded方法接收的触摸的NSSet.为简单起见,我只在相关代码中发布了我的问题.所以,要明确一点:

-(void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    [self addProjectile:touches]; }
-(void) addProjectile:(NSSet *)touches {//do stuff }
Run Code Online (Sandbox Code Playgroud)

我想在名为swipeRight的UIPanGestureRecognizer方法的末尾调用addProjectile并发送正确的NSSet触摸.

-(void)swipedRight:(UIPanGestureRecognizer *)recognizer {
    CGPoint panned=[recognizer translationInView:self.view];
    if(panned.x>50){//do stuff }
    else {
    NSSet *touches; <-- this is what I need to get
    [self addProjectile:touches];
Run Code Online (Sandbox Code Playgroud)

所以我的问题是如何在swipedRight结束时获得正确的NSSet触摸(这是用户拿起他/她的手指):正确执行addProjectile方法.

uitouch ios uiswipegesturerecognizer uipangesturerecognizer

1
推荐指数
1
解决办法
1735
查看次数

获取Swift中UIPanGestureRecognizer的起点和终点

我正在使用UIPanGestureRecognizer一个项目,我想采取起点和终点.

我试图做touchesBegin,但没有得到我需要的代码.

我怎样才能得到起点和终点UIPanGestureRecognizer

uipangesturerecognizer swift swift2 swift2.1

1
推荐指数
1
解决办法
2946
查看次数

iOS模拟器在随机一段时间后会停止正确识别手势

对不起,这有多久了。寻找任何人可能拥有的指针对我来说都是一个谜。

iOS模拟器中似乎存在一个错误,即UIGestureRecognizers如何工作并传递接触点,该接触点一直持续到模拟器重新启动为止。即使杀死该应用程序并在模拟器中重新启动它也无法修复它。修复它的唯一方法(暂时)是完全退出模拟器并重新启动它。

我在UIViewController子类中有一个SKView子类。SKView子类占据UIViewController的底部,顶部包含一些按钮和其他控件。游戏涉及由UIGestureControllers管理的轻击和平移,UIGestureControllers由拥有SKScene子类的SKView子类拥有。

在任意一段时间后,手势将停止正常工作。在SKScene拥有的视图中,没有一个可以正确识别。如果我在SKView外部单击并在父UIViewController中单击,则会显示它们,但坐标全都错了。它还会导致状态错误-有时UIPanGestureRecognizer认为按下了两个手指,而不是只有一个。UIPanGestureRecognizer同样处于关闭状态。这种行为没有可识别的模式-它只是突然开始的。

这是初始化SKView及其场景的相关代码:

    SKView * _gameView = [[SKView alloc] initWithFrame : gameRect];
    _gameView.clipsToBounds = YES;
    // _gameView.scene is an SKScene subclass
    CGSize gameSize = CGSizeMake(_gameView.bounds.size.width,
                                 _gameView.bounds.size.width);
    _scene = [[GameScene alloc] initWithSize : gameSize];
    // Present the scene.
    [_gameView presentScene : _scene];
    [self.view addSubview : _gameView];
Run Code Online (Sandbox Code Playgroud)

这是SKScene子类中注册UIGestureControllers的代码:

- (void) initializeGestureRecognition : (SKView *) view
{
    UIPanGestureRecognizer * panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget : self action : @selector (handlePanGesture:)];
    UITapGestureRecognizer * tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget : self action : …
Run Code Online (Sandbox Code Playgroud)

simulator objective-c ios uitapgesturerecognizer uipangesturerecognizer

1
推荐指数
1
解决办法
206
查看次数