2016-03-23 26 views
2

'daki dokunmalarla devre dışı bırakıldığını belirleme Bir kullanıcının bir uygulama ile etkileşimde olduğunu ve kullanıcının bir uygulama ile etkileşimde bulunmadığını saptamak için hangi kod kullanılabilir? Bir uygulamanın etkin olduğu veya Swift

Şu anda da kaydırma hareketlerini alınması ve jestleri dokunun tarafından, geçersiz dokunuşlar tarafından dokunuşları aldığını bir UIView ile ViewController var. Bu probleme bir çözüm, o mevcut hareketlere ayrı olmalı ya da bu jestlerin üzerine oturmalıdır.

Uygulamam, hareketleri aldığında ve jest alınmadığında ne diyebileceğini söyleyen her şeyin üstünde duran bir jest tanıyıcı var mı?

uygulama etkinken, uygulama dokunuşlar alıp almadığını izlemek için bir yol yoktur ve o değildir ve örneğin gerektiği gibi bir işlev, çağırdığınızda:

func appActive(){ 
    print("App received input from a touch, tap, swipe, long press etc.") 
} 

func appInactive(){ 
    print("App stopped receiving any input.") 
} 

teşekkür ederiz.

+0

vb pencerede jest koyarak dokunmatik alabilirsiniz aktif devlet için, aktif halidir değilken herhangi dokunmatik olay alamayan ... Söz @Sulthan – HardikDG

+0

Swift değil OC içindedir . Swift'de main.m dosyası olmadığı için bu cevabın nasıl çalıştığı belli değil. Cevap, sorulan soru olarak Swift’de. – user4806509

+0

@Sulthan Asla "bana kod ver" diye sormadım. S/O S/E, Q & A'dır. Bir cevabınız var mı? Harika! Değilse, diğer iyi cevapları yok etmeyin. Eğer Swift'i öğrenmiş olsaydın OC sorusu yeterli değil. Eğer Swift'e yardım edemiyorsan, o zaman soruyu kapatmayın, özellikle de dil tamamen farklı olduğunda! Hiç kimsenin yardım edemediği bir durumda, diğer cevapları diğer adımlarla öğrenmesi için, diğer web eğitmenlerine ulaşarak, bütünüyle şifreli olanın yerine düzgün ve tutarlı bir cevapta bir araya gelme yolunda referans göstererek iki yanıt aradım. ve kodu seçtikleri şekilde açıkça kullanın. – user4806509

cevap

3

Swift 2. Xcode 7.2. Uyarlanmıştır 9.

- iOS 7 üzerinde test: How to detect all touches in Swift 2 ve Subclass UIApplication with Swift


1 - projenizin Swift dosyasını AppDelegate.swift bulun ve açıklama @UIApplicationMain:

//@UIApplicationMain 

2 - Tam olarak main.swift adlı projenize yeni Swift dosyası ekleyin ve eklemek kodu:

import UIKit 

UIApplicationMain( 
CommandLine.argc, UnsafeMutableRawPointer(CommandLine.unsafeArgv) 
    .bindMemory(to: UnsafeMutablePointer<Int8>.self, 
     capacity: Int(CommandLine.argc)), nil, NSStringFromClass(AppDelegate.self)) 

3 - adlı projenize yeni Swift dosya ekle tam olarak UIApplication.swift ve kodu ekleyin:


4 - projenizin Info.plist dosyayı bulun ve yeni bir anahtar (Xcode menüsü: Editor > Add Item) ekleyin, seçmek veya dize değeri MyApplication ile, anahtar Principal class yazın.

enter image description here


5 - Projeyi çalıştırın!


+0

Çözülmemiş tanımlayıcı kullanımı 'Process' – Bharathi

+0

@Bharathi bir yol buldunuz bir hata alıyorum? – Harris

+0

kullanımı kod instead.UIApplicationMain (CommandLine.argc, UnsafeMutableRawPointer (CommandLine.unsafeArgv) .bindMemory ( için bu hat: UnsafeMutablePointer .self, kapasitesi: Int (CommandLine.argc)), sıfır, NSStringFromClass (appDelegate)) –

2

Uygulamanızın herhangi bir dokunuşunu engellemenin bir yolu, bunları iptal etmeden dokunmaları yakalayacak özel bir UIWindow oluşturmaktır.

class CustomWindow: UIWindow { 

    override func pointInside(point: CGPoint, withEvent event: UIEvent?) -> Bool { 
     // Do any action you would like to perform to indicate the application is active 
     return false 
    } 

} 

Bu pencereyi Uygulama Temsilcinize eklemelisiniz ve düzeyini ana pencerenin üzerine getirmeniz gerekir.

@UIApplicationMain 
class AppDelegate: UIResponder, UIApplicationDelegate { 

    var window: UIWindow? 
    var topWindow: CustomWindow? 


    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool 
    { 
     topWindow = CustomWindow(frame: UIScreen.mainScreen().bounds) 
     topWindow?.rootViewController = UIViewController() 
     topWindow?.windowLevel = UIWindowLevelNormal + 1 
     topWindow?.hidden = false 
     return true 
    } 
+0

Teşekkürler. Bu, bir kullanıcı etkileşime başladığında bana söylenir, ancak bir kullanıcı etkileşimi kesiştiğinde bana söylemez. Örneğin, bir kullanıcı ekranı 5 saniye boyunca sürekli olarak dokunduğunda, yani hareket ettirildiğinde veya kaydırıldığında veya bir düğmeyi basılı tutarsa, ilk etkileşimi elde ettim, ancak kullanıcının hala etkileşim kurduğunu veya kullanıcının Örneğin etkileşime girme bitti. Etkileşim durduğunda kodun nasıl uyarılacağı nasıl değiştirilebilir? Ayrıca, ne tür bir dokunma olayının tetiklendiğini (yani uzun basma, dokunma vb.) Bulmak mümkün. – user4806509