2016-05-31 49 views
9

Dokunuşları kullanarak dokunuşları algılayabildiğini biliyorumBegan, touchesEnded, vb. Tüm bunlar. Tek şey, sadece görünümün kendisindeki dokunuşları algılamaktır, bu görüşün bir metin alanı gibi bir şey üzerinde değil.Swift, ekranda herhangi bir yere dokunmayı algılar

Amacım belirli bir süre işlem yapılmadığında bir zaman aşımı oluşturmaktır. Ekrana dokunulursa zaman aşımı sıfırlanır, yani birisi uygulamayı kullanmaya devam eder. Herhangi bir kontrolün üzerine dokunmadığı sürece, bir etiket, düğme, metin görünümü, vb.

Ayrıca, herhangi bir denetime dokunulduğunda zaman aşımını da sıfırlayabilirim, ancak çok daha fazla durum gerektirir (farklı görünüm denetleyicilerinde farklı denetim türleri).

Tüm ekran sonu algılama yöntemini arıyorum. Herhangi bir fikir?

cevap

14

Sen AppDelegate için bu ekleyebilir.

+0

AppDelegate'ı UIGestureRecognizerDelegate protokolüne nasıl uyarlarım? – circuitry

+1

Sadece bunu AppDelgate sınıf bildiriminize yazın: sınıfı AppDelegate: UIResponder, UIApplicationDelegate, UIGestureRecognizerDelegate – Nati

0

Sürükle ve bırak UITapGestureRecognizer, tüm görünümün seçili olduğundan emin olun. Görünüm denetleyicinizin üst satırına eklenecek, daha sonra bunun için bir Action oluşturun.

Düğmelerden herhangi birine basılmadığından emin olmak istiyorsanız, hareketsizlik süresi bittiğinde, başka bir görünüm ekleyin (saydam veya biraz daha koyu olabilir) ve buna UITapGestureRecognizer ürününü bağlayın. Bir kez dokunduğunuzda, eklenen görünümü serbest bırakın ve etkinliği devam ettirin.

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
     let tapGesture = UITapGestureRecognizer(target: self, action: nil) 
     tapGesture.delegate = self 
     window?.addGestureRecognizer(tapGesture) 

     return true 
} 

func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool { 
     // User tapped on screen, do whatever you want to do here. 

     return false 
} 

Ve ayrıca AppDelegate UIGestureRecognizerDelegate protokolüne uygun hale: