SORU
30 Mart 2010, Salı


Bulma UİScrollView kaydırma yönü?

Sadece yatay kaydırma izin UIScrollView ve kullanıcı verilirse hangi bilmek istiyorum. Ne yaptım UIScrollView alt touchesMoved yöntemini geçersiz kılar

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    [super touchesMoved:touches withEvent:event];

    UITouch *touch = [touches anyObject];
    float now = [touch locationInView:self].x;
    float before = [touch previousLocationInView:self].x;
    NSLog(@"%f %f", before, now);
    if (now > before){
        right = NO;
        NSLog(@"LEFT");
    }
    else{
        right = YES;
        NSLog(@"RIGHT");

    }

}

Ama bu yöntem bazen hareket edince hiç adı olmaz. Ne düşünüyorsun?

CEVAP
1 Kasım 2010, PAZARTESİ


Yönünü belirlemek oldukça kolaydır, ama birkaç kez yön değiştirebilir unutmayın bir jest boyunca. Örneğin, eğer bir scrollview ile disk belleği açık ve kullanıcı bira gitmek için bir sonraki sayfa, ilk yönü olabilir sağa, ama eğer sıçrama açık olacak kısa olacak hiçbir yön ve kısa bir süre sonra olacak şekilde sola.

Yönü belirlemek için, UIScrollView scrollViewDidScroll temsilci kullanmanız gerekir. Bu örnek, geçerli içerik bir önceki ile uzaklığı karşılaştırmak için kullanılacak olan bir değişken lastContentOffset adında oluşturdum. Eğer daha fazla olursa, o zaman scrollView doğru kaydırma. Eğer daha sonra eğer scrollView sol kaydırma:

//somewhere in the header
@property (nonatomic, assign) CGFloat lastContentOffset
//
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
   ScrollDirection scrollDirection;
   if (self.lastContentOffset > scrollView.contentOffset.x)
      scrollDirection = ScrollDirectionRight;
   else if (self.lastContentOffset < scrollView.contentOffset.x) 
      scrollDirection = ScrollDirectionLeft;

   self.lastContentOffset = scrollView.contentOffset.x;

   // do whatever you need to with scrollDirection here.    
}

Aşağıdaki numaralama yönü tanımlamak için kullanıyorum. ScrollDirectionNone ilk değer ayarı değişkenleri başlatırken bu yönde varsayılan yapma yararı vardır:

typedef enum ScrollDirection {
    ScrollDirectionNone,
    ScrollDirectionRight,
    ScrollDirectionLeft,
    ScrollDirectionUp,
    ScrollDirectionDown,
    ScrollDirectionCrazy,
} ScrollDirection;

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Andrey Menshikov

    Andrey Mensh

    28 Ocak 2012
  • Pocketnow

    Pocketnow

    14 EKİM 2007
  • Ty Moss

    Ty Moss

    20 Kasım 2007