Sen UIGestureRecognizer
'ın state
özelliğinin uygulanmasını değiştiremez. state
'u herkese açık olarak ayarlayıp ayarlayabilirseniz, iletilen ve state
olarak ayarlanmış farklı bir hesaplanmış özellik myState
oluşturabilirsiniz. Maalesef yapamazsın. Bununla birlikte KVO (Key Value Observing) kullanarak bunu yapabilirsiniz.
İlk kapalı, bizim jest için KVO bildirimlerine yanıt verebilecek bir nesne oluşturur ve state
özelliği çağrıldığında çağrılan observeValueForKeyPath
uygular.
class StateObserver : NSObject {
override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) {
if let gesture = object as? UIGestureRecognizer {
gesture.stateChanged(gesture.state)
}
}
}
İkincisi, tap.state
değiştiğinde bildirim almak için bir StateObserver
örneğini kaydettirin.
let stateObserver = StateObserver()
let tap = UITapGestureRecognizer()
tap.addObserver(stateObserver, forKeyPath: "state", options: [.New, .Old], context: nil)
Üçüncü olarak, bitirdiniz kez StateObserver
kaydını unutmayın.
tap.removeObserver(stateObserver, forKeyPath: "state'")
Gözlemciyi ne zaman çıkarırsınız? Eğer bir UITapGesture örneğinde olduğu gibi, her zaman orada olmak için birden fazla dokunuş olması gerekmez mi? –
Artık bildirim almak istemediğinizde, gözlemciyi kaldırmanız konusunda haklısınız. Bir örnek, ekranda görüntülendiğinde ve görünümü kaldırıldığında gözlemciyi çıkardığında gözlemciyi ekleyecektir. – Kevin