Notification Center II 📻

Şule Turp
NSIstanbul
Published in
3 min readFeb 22, 2018

Merhaba,

önceki yazımda bir olay gerçekleştiğinde bir veya birden fazla noktayı tetiklemek istiyorsam Notification Center kullanabilirim, bununla birlikte veri aktarımı da sağlayabilirim demiştik. Kendimiz bir notification tanımlamış, olay gerçekleştiğinde kendi yarattığımız notification’ı dinlemiş ona göre hareket etmiştik.

Bu yazıda ise notification yaratmayacak, frameworkte varolan notificationları dinleyeceğiz. Peki bu notification’ların neler olduğunu nereden bileceğim? İhtiyaç doğrultusundaki class’ı incelediğinizde extension Notification.Name {} şeklinde tanımlanmış kısım içerisinde bulunmaktadır. İnceledikten sonra ihtiyacımız doğrultusunda kullanabiliriz. O zaman bir deneme yapalım.

Bu denemede UITextfield ve UIKeyboard Notification’ları üzerinden gideceğiz. Hangi notification’ları desteklediğini görmek için UITextfield class’ına gidip bakıyoruz. UIKeyboard için de aynı işlemi yaparak onun da notificationlarını öğreniyoruz.

Commond + Shift+ O

UITextfield editleme başladı, bitti ve içerik değiştirildi durumlarında notification gönderiyor. UIKeyboard ise görünüyor, göründü, kayboluyor, kayboldu durumları için notification kullanabilirsiniz diyor. O zaman bu notification’ları denemek üzere bir deneme yapalım.

Aşağıdaki View Controller’da bir label var, yapılan işlemlerimizin anlık durumunu onunla göreceğiz. Bir textfield ve bir button var. UITextfield normal şartlarda aktif edildiğinde klavye açılacağı için klavyenin arkasında kalacak. Böyle bir durumu engellemek için textfield editlenmeye başladığı anda klavyenin yüksekliği kadar view’imizi yukarı çekeceğiz ki textfield’ımız klavyenin arkasında gizli kalmasın.

1- Notification’ları dinlemek üzere NotificationCenter’a kaydet

Kullanmak istediğimiz notification’ları addObserver ile dinlemeye başlıyoruz ve tetikleyeceği metodları selector içerisinde tanıtıyoruz.

Eğer uygulamanız iOS 9 öncesini destekliyorsa, notification ile işiniz bittiği taktirde, örneğin sayfanızın viewDisAppear metodu içerisinde removeObserver metodu ile NotificationCenter’ın o notification’ı dinlemesini sonlandırmalıyız. iOS 9 sonrasında bu işleme gerek kalmamaktadır. Eğer 9 öncesi bir sürüm destekleyecekseniz yine de removeObserver’ı yazıyor olmanız sonraki sürümler için bir sorun yaratmayacaktır.

2- Notification duyulduğunda tetiklenecek metodu ve yapacağı işi belirle

Her notification ile tetiklenen metod yaptığı işlemi label’a yazacak bu şekilde işleyişi simülatörde rahatça göreceğiz. Will Show Keyboard metodunun içerisine verdiğimiz notification parametresinin userInfo’sunda gelen keyboard frame’inden klavye yüksekliğini alıyoruz. Ardından bu uygulama içerisindeki scrollView’in normalde x:0, y:0 olan contentOffset’inin y değerini klavye yüksekliği kadar arttırıyoruz. View yukarı çekilmiş oluyor ve bu sayede textfield klavyenin arkasında kalmayıp editlenebilir şekilde görünüyor. will Hide Keyboard metodunda ise content offset’in y değerini tekrar 0'a çekiyoruz.

Sonuç olarak, notificationlar ile durumları yakalayabilir ve kontrol edebiliriz. Bunun gibi diğer notification’ları öğrenmek için Notification.Name extension’larını ve apple dokümanını inceleyebilirsiniz.

Sonraki yazıda neler var? 📆

Sonraki yazıda custom notification içerisinde veri gönderecek, o notification’ı dinleyen birden fazla view controller içerisinde de gelen veriye göre farklı güncellemeler yapacağım.

🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟

Geri bildirim ve sorularınız için yorum yapabilir veya suleturp@gmail.com adresine e-posta gönderebilirsiniz. Okuduğunuz için teşekkürler, görüşmek üzere 💁 🌟

--

--