SORU
3 Mart 2011, PERŞEMBE


Nasıl UİPanGestureRecognizer kullanarak çıkarmayı başardı ediliyor yakalayabilir miyim?

Etrafta multi-touch hareketleri yakalamak için güneşin altında her seçeneği bakıyordum ve sonunda tepeye çıktım ve geri UİPanGestureRecognizer at Tamam.

İşlevi oldukça basittir istiyorum. İki parmak kaydırma hareketiyle kurulum var, ve bazı resimler kaç hareket bağlı olarak karıştırmak için mümkün olmak istiyorum. Bir sorun çıkmadı hepsi var, ama eğer kaydırma hareketi TERSİNE yakalamak mümkün olmak istiyorum.

Sadece bir geri hareketi devam algılamak için görüşmüyorum yerleşik bir yolu var mı? Orijinal başlangıç noktam saklamak gerek, sonra da bitiş noktasını izlemek, sonra o ve se ilk biten yıldan az bir nokta varsa onlar nereye görmek ve buna göre ters? Bu çalışma, ama daha zarif bir çözüm olduğunu umuyorum! görebiliyorum!

Teşekkürler

DÜZENLEME:

Burada algılayıcı ateş yöntemi. Kesmek, ama onun biraz çalışır:

-(void) throttle:(UIGestureRecognizer *) recognize{

throttleCounter   ;

if(throttleCounter == 6){
    throttleCounter = 0;
    [self nextPic:nil];
}

UIPanGestureRecognizer *panGesture = (UIPanGestureRecognizer *) recognize;
UIView *view = recognize.view;
if(panGesture.state == UIGestureRecognizerStateBegan){
    CGPoint translation = [panGesture translationInView:view.superview];
    NSLog(@"X: %f, Y:%f", translation.x, translation.y);
}else if(panGesture.state == UIGestureRecognizerStateEnded){
    CGPoint translation = [panGesture translationInView:view.superview];
            NSLog(@"X: %f, Y:%f", translation.x, translation.y);
}
  }

Sadece değerler arasındaki farklar...deneyin ve kaydırma onlar için takip etmeye başlayacağım noktaya geldim

CEVAP
3 Mart 2011, PERŞEMBE


UİPanGestureRecognizer -velocityInView: Bu jesti kabul edildiği anda parmaklarının hız almak için kullanabilirsiniz.

Eğer pan bir doğru üzerinde bir şey ve pan Sol tarafta bir şey yapmak istersen, örneğin, gibi bir şey yapabilirsiniz:

- (void)handleGesture:(UIPanGestureRecognizer *)gestureRecognizer
{
    CGPoint velocity = [gestureRecognizer velocityInView:yourView];

    if(velocity.x > 0)
    {
        NSLog(@"gesture went right");
    }
    else
    {
        NSLog(@"gesture went left");
    }
}

Eğer gerçekten istiyorum algılamak için bir geri dönüş olarak istediğiniz karşılaştırmak yeni bir hız için eski bir bakın ve eğer sadece tam tersi yönü hangi yönde olabilir — bunu yapabilirmisin:

// assuming lastGestureVelocity is a class variable...

- (void)handleGesture:(UIPanGestureRecognizer *)gestureRecognizer
{
    CGPoint velocity = [gestureRecognizer velocityInView:yourView];

    if(velocity.x*lastGestureVelocity.x   velocity.y*lastGestureVelocity.y > 0)
    {
        NSLog(@"gesture went in the same direction");
    }
    else
    {
        NSLog(@"gesture went in the opposite direction");
    }

    lastGestureVelocity = velocity;
}

Çarpma ve ekleyin şey biraz tuhaf görünebilir. Aslında bir nokta ürün, ama emin olun olacak bir pozitif sayı varsa, hareketleri aynı yöne gidiyorum, 0 eğer onlar tam olarak doğru açılar ve sonra olmak negatif bir sayı varsa, onlar tam tersi yönde.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • andyabc45

    andyabc45

    1 Mayıs 2011
  • jonathepianist

    jonathepiani

    31 Temmuz 2008
  • TopOfTheTech

    TopOfTheTech

    5 NİSAN 2010