Ekranı Kapatan Klavyeye Çözüm

Input alanını kapatan klavyeye sinir oluyor musunuz? O zaman sizi Ekranı Kapatan Klavyeye Çözüm dersine alalım 🙂

Uygulamanızı test ederken klavyenin ekranı engellediği illaki olmuştur.

Bu problemin birden çok çözüm yolu olsada test ettiğim yöntemlerden en başarılısı ve en temiz olan yolu sizlerle paylaşmak istiyorum.

Sözü uzatmadan hemen örnek proje üzerinden başlayalım 🔨

 

Ekranı Kapatan Klavyeye Çözüm: Örnek Uygulama

Projemizi oluşturduktan sonra şekildeki gibi ekranın alt tarafına bir TextField koyalım ve auto-layout ile sabitleyelim. Aşağıdan 50 piksel kalana kadar indirebilirsiniz.

0*4HNhSiehXz0PoNSH.png

İlk işimiz klavyeyi otomatik olarak açıp ya da kapatmak.

Bunu yapabilmek için önce ViewController class ımızı UITextFieldDelegate protokolü ile extend edelim ve viewDidLoad metodu içinde TextField ımızın delegate ini self değerine eşitleyelim.

class ViewController: UIViewController, UITextFieldDelegate

ve

myTF.delegate = self

 

Klavyeyi Dokunmaya Hassas Hale Getirmek

Ekranı kapatan klavyeye çözüm bulmadan önce şu klavyeyi dokunmaya duyarlı hale getirelim bi hele 🙂

 

Şu an input alanını kapatmaya çözüm henüz üretmedik ama kullanıcı ekranın boş bir yerine dokunduğu zaman veya klavyesinden Tamam tuşuna bastığı zaman ekranı otomatik olarak açıp kapattık.

Şimdi ise kullanıcı input alanına dokunduğu zaman ekranı yukarı kaydıracağız ve input alanımız hemen her koşulda klavyenin üstünde kalacak.

Bunun için observer kullanacağız. Bu observer lar klavye hareketlerini sürekli takip edecek ve biz de klavye açıldığı zaman içeriği yukarı taşımasını isteyeceğiz.

 

 

Sonuç

Yukardaki kod parçacağında şunları yaptık:

  • Klavyenin açıldığını takip eden bir observer yarattık ve klavye açıldığında ekran içeriğini y ekseninde yukarı taşıdık.
  • Klavyenin kapandığını takip eden bir observer yarattık ve klavye kapandığında ekran içeriğini y ekseninde eski pozisyonuna taşıdık.
  • Bu iki observer fonksiyonunu gerektiği zaman kullanmak üzere başka bir fonksiyon içinde topladık.

 

Son olarak projemize eklediğimiz adjustKeyboard fonksiyonunu viewDidLoad içerisinde çağıralım ve projemizi çalıştıralım.

iR00IAMHzM.gif

 

Tüm işlem bu kadardı.

 

Not:

İçeriğin eğer gereğinden fazla yukarı kaydığını düşünüyorsanız

self.view.frame.origin.y -= keyboardSize.height*0.9

satırındaki 0.9 çarpanını düşürmenizi tavsiye ederim.

 

Ayrıca,

 

TextField alanının bu görüntüsünden hoşlanmadıysanız daha profesyonel bir görünüm kazandırmak için CocoaPods Kullanımı dersine bakabilirsiniz.

 

Projenin kaynak koduna iOS Notları – Github hesabından erişebilirsiniz.

 

Klavye sorununa siz nasıl çözüm buluyorsunuz? Yorum kısmında tartışalım.

 

4 Comments

Comments are closed.