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
Kimler Neler Demiş?

avatar
2 Comment threads
2 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
2 Comment authors
erayYusufKlavye Yerine DatePicker Kullanmak Recent comment authors
  Subscribe  
En Yeniler Eskiler Beğenilenler
Bildir
trackback

[…] tarih inputu eğer sayfanın altında kalıyor ve klavye bu alanı kapatıyorsa buradan “Klavyeyi Kapatan Klavyeye Çözüm” konulu dersimi […]

Yusuf
Ziyaretçi

Constraints’leri değiştirerek çözüm buluyordum bunu da deneyelim.

Eray Alparslan
Yönetici

Klavye açıldığında anchor ile elamana constraint mi veriyordunuz hocam

Yusuf
Ziyaretçi

Çözüm şekli buradan bulmuştum. https://stackoverflow.com/questions/25693130/move-textfield-when-keyboard-appears-swift

Tabi sizin yöntem daha rahat geldi ayarlaması daha kolay.