IQKeyboardManager Nedir? Kurulumu ve Özelleştirilmesi
Öncelikle herkese merhaba. Bu benim ilk medium yazım. Dolayısıyla acemiliğimin ve ufak hatalarım varsa farkında olmadan bunları yapmış olabilirim, şimdiden kusura bakmayın ve bana lütfen iletin. :)
iOS uygulaması geliştirmeyi öğrendiğim süreçte yapmaya çalıştığım uygulamanın bir ekranında klavye UITextField/UITextView’ın üstünde kalıyordu. Bu sorunu aşmayı bilenler için gayet kolay bir sorun fakat bir tanıdığıma sormadan önce benim için dünyanın en büyük sorunuydu ve kesinlikle çözülmeyeceğini düşünmüştüm. Ardından kütüphaneyi keşfetmemle zaten çoğu kişinin bildiği bu kütüphane hakkında Türkçe yazı olmadığını fark ettim. Bu da bu yazının motivasyonunu oluşturdu. Belki benim gibi bu işte yeni olanların, öğrenmeye çalışanları benim gibi omuzlarındaki bu büyük yükü atmalarını sağlarım.
IQKeyboardManager Nedir?
IQKeyboardManager tek satır bile kod yazmanıza gerek kalmadan otomatik olarak çalışan, yukarıda belirttiğim gibi klavye altında UITextField/UITextView’ın kalması gibi sorununu kod yazmadan çözmenizi sağlayacak, özelleştirebildiğiniz mükemmel bir açık kaynak kütüphanesi.
Kurulumu
İlk önce uygulamamızın içinde olduğu klasörde terminal açıp aşağıdaki kodu yazıyoruz.
pod init
Swift 3.0 ve üstü için (Xcode 9.0) pod dosyanıza şu satırı eklemeniz yeterli.
pod 'IQKeyboardManagerSwift'
Podfile’ı kaydettikten sonra, aşağıdaki .xcode dosyasını açacağız. Bundan sonra bütün işlerimizi bu projeden yapacağız mavi ikonlu .xcode dosyasını unutun.
Açtıktan sonra projeyi bir kere build & run yapıyoruz ardından AppDelegate.swift dosyasından kütüphaneyi “import” ediyoruz.
import IQKeyboardManagerSwift
Ardından didFinishLaunchingWithOptions fonksiyonunun içine aşağıdaki kodu olduğu gibi yapıştırıyoruz.
IQKeyboardManager.sharedManager().enable = true
Şöyle bir görüntü oluşmalı:
Tebrikler! Projeyi çalıştırdığınızda klavye altında UITextField/UITextView’ın kalması gibi bir sorun yaşamayacaksınız.
IQKeyboardManager’ın Özelleştirilmesi
Bundan sonrası yine çok basit ve kolay AppDelegate.swift dosyasında yapacağımız değişikliklerle alakalı.
İlk olarak aşağıdaki toolbar’ı nasıl kaldıracağımızı öğrenelim.
IQKeyboardManager.sharedManager().enableAutoToolbar = false
Projeyi tekrar çalıştırdığınızda toolbar’ın gittiğini göreceksiniz.
Gece modunda çalışan bir uygulama yapıyorsanız IQKeyboardManager’ın size göre bir teması var! Aşağıdaki satırlarla aktif edebilir, diğer temalarla değiştirebilirsiniz.
IQKeyboardManager.sharedManager().overrideKeyboardAppearence = trueIQKeyboardManager.sharedManager().keyboardAppearence = .dark
İsterseniz textField’tan uzaklığını aşağıdaki satırla değiştirebilirsiniz.
IQKeyboardManager.sharedManager().keyboardDistanceFromTextField = 96.0 //uzaklığı istediğiniz gibi ayarlayabilirsiniz.
ToolBar’ın rengini değiştirmek istiyorsanız yukarıda bahsettiğim tema için yazmanız gereken kodları inaktif hale getirmelisiniz, aksi takdirde aşağıdaki satır çalışmayacaktır. İsterseniz silin veya komut satırına alın. ToolBar rengini aşağıdaki satırla değiştiriyoruz.
IQKeyboardManager.sharedManager().toolbarBarTintColor = .red
Toolbar’daki “Done” yazısını aşağıdaki satır sayesinde değiştirebiliyoruz.
IQKeyboardManager.sharedManager().toolbarDoneBarButtonItemText = "Dismiss"
İsterseniz “Done” butonu yerine bir görsel atayabilirsiniz. Assets’e görseli attıktan sonra sağ taraftan Image Set içinden “Render as: Original Image” olarak işaretlemeyi unutmayın. O da şöyle oluyor:
IQKeyboardManager.sharedManager().toolbarDoneBarButtonItemImage = UIImage(named: "ikonunadiburaya")
UITextField/UITextView’ın dışında herhangi bir yere tıklandığında klavyenin gitmesini istiyorsanız aşağıdaki satırı yazmanız yeterli olacaktır.
IQKeyboardManager.sharedManager().shouldResignOnTouchOutside = true
Tuşlara tıklandığında klik sesinin çıkmamasını istiyorsanız şu satırı yazmalısınız. Default olarak bu “true” olarak gelir.
IQKeyboardManager.sharedManager().shouldPlayInputClicks = false
Eğer buraya kadar okuduysanız hepinize en içten teşekkürlerimi sunarım. Aklınıza takılan, yardımcı olabileceğim her soru için Linkedin hesabımdan bana ulaşabilirsiniz.