2016-06-08 3 views
0

Я пытался выяснить, как это исправить самостоятельно, без везения.Проблемы с жестом разворота в ландшафтном режиме

Язык программирования Objective-C и SpriteKit - это технология.

Я пытаюсь сделать SKNode перемещение по экрану с помощью жестов. (В приложении с ландшафтным режимом)

Проблема в том, что когда я прокручиваю левую или любую другую сторону, узел будет перемещаться в противоположном направлении и использовать другой метод, чем предполагалось. Похоже, iPhone думает, что он в портретном режиме. Что мне делать?

Вот код:

Внутри .h Декларирование узел

SKNode *Main_Character; 

Inside .m

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    /* Called when a touch begins */ 
    UISwipeGestureRecognizer *oneFingerSwipeLeft = [[UISwipeGestureRecognizer alloc] 
                initWithTarget:self 
                action:@selector(SwipedLeft)] ; 
    [oneFingerSwipeLeft setDirection:UISwipeGestureRecognizerDirectionLeft]; 
    [[self view] addGestureRecognizer:oneFingerSwipeLeft]; 

    UISwipeGestureRecognizer *oneFingerSwipeRight = [[UISwipeGestureRecognizer alloc] 
                initWithTarget:self 
                action:@selector(SwipedRight)] ; 
    [oneFingerSwipeLeft setDirection:UISwipeGestureRecognizerDirectionLeft]; 
    [[self view] addGestureRecognizer:oneFingerSwipeRight]; 

    UISwipeGestureRecognizer *oneFingerSwipeUp = [[UISwipeGestureRecognizer alloc] 
                initWithTarget:self 
                action:@selector(SwipedUp)] ; 
    [oneFingerSwipeLeft setDirection:UISwipeGestureRecognizerDirectionUp]; 
    [[self view] addGestureRecognizer:oneFingerSwipeUp]; 

    UISwipeGestureRecognizer *oneFingerSwipeDown = [[UISwipeGestureRecognizer alloc] 
                initWithTarget:self 
                action:@selector(SwipedDown)] ; 
    [oneFingerSwipeLeft setDirection:UISwipeGestureRecognizerDirectionDown]; 
    [[self view] addGestureRecognizer:oneFingerSwipeDown]; 
} 

// Methods to make the node move when a swipe is called. 
-(void)SwipedDown{ 
    SKAction *Move = [SKAction moveByX:0.00 y:-50 duration:2]; 

    [Main_Character runAction:Move]; 
} 

-(void)SwipedUp{ 
    SKAction *Move = [SKAction moveByX:0.00 y:+50 duration:2]; 

    [Main_Character runAction:Move]; 
} 

-(void)SwipedRight{ 
    SKAction *Move = [SKAction moveByX:+50 y:0.00 duration:2]; 

    [Main_Character runAction:Move]; 
} 

-(void)SwipedLeft{ 
    SKAction *Move = [SKAction moveByX:-50 y:0.00 duration:2]; 

    [Main_Character runAction:Move]; 
} 

ответ

0

Ваша копия/вставить не удалось, вы должны исправить свои setDirections, вы устанавливаете только влево, когда вы хотите установить другие направления.

+0

Скопировать пасту? Не знаю, что вы имеете в виду. Но код написан мной. А также, как вы исправляете «setDirections»? –

+0

вы копируете/вставляете свой код 4 раза, чтобы обрабатывать 4 направления: E.G. '[oneFingerSwipeLeft setDirection: UISwipeGestureRecognizerDirectionUp];' должно быть '[oneFingerSwipeUp setDirection: UISwipeGestureRecognizerDirectionUp];' – Knight0fDragon

+0

Глупо мне .. Чувствуешь себя настолько глупо, что не заметил этого еще .. Большое вам спасибо! –

Смежные вопросы