2010-12-30 15 views
10

UILongPressGesture, ios ver 3.2 ve sonrası sürümlerinde mevcuttur. Ama maksimum uyumluluk için uygulama geliştirmeye çalışıyoruz ve dolayısıylaiOS'taki Long Press hareketinin işlevselliği nasıl elde edilebilir 3.2

kimse

+1

Bunu App Store için gönderiyorsanız, iPhone OS 2.x'i destekleyemediğinizi unutmayın. Apple tarafından kabul edilen minimum sürüm hedefi şu anda 3.0. –

cevap

18

Tek bir parmak için oldukça basittir: DokunuşlarBegan yönteminde bir zamanlayıcı başlatın ve zamanlayıcı tetiklendiğinde bir eylemi tetikleyin. Ateş etmeden önce bir dokunuş alırsanız zamanlayıcıyı iptal edin. İşte performSelector ... afterDelay yöntemini kullanan bir uygulama.

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    [self performSelector:@selector(fireLongPress) 
       withObject:nil 
       afterDelay:LONG_PRESS_THRESHOLD]; 
} 

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 
    [NSObject cancelPreviousPerformRequestsWithTarget:self]; 
} 

- (void)fireLongPress { 
    // do what you want to do 
} 

Ayrıca, parmağınız çok uzaktaysa, zamanlayıcıyı da öldürmek isteyebilirsiniz.

Çoklu dokunuşla, biraz daha karmaşıktır. Hangi dokunuşun olduğunu takip etmeniz ve ne yapacağınıza karar vermeniz gerekir. Bir parmak yeterince uzun basıldığında, ancak diğeri (ya da UILongPressGestureRecognizer ne yaptığını anlamaya).

+5

Onun yerine [NSObject cancelPreviousPerformRequestsWithTarget: self] 'kullanmak zorunda kaldım. –

1

senin görünümünde touches... yöntemlerini uygulamak ios v2.0 uzun basın jest başarmak için nasıl bana yol misiniz ios Ver2.0 hedefliyorum. Belirli bir süre touchesBegan:withEvent: ve touchesEnded:withEvent: arasında herhangi bir touchesMoved:withEvent: olayı olmadan geçerse, uzun bir basın var.

İlgili konular