Telefon Numarası Formatlamak

 

Telefon numarası formatlamak nasıl yapılır öğreniyoruz 📖

Ön Bilgi

iOS uygulamanızda telefon numarasıyla alakalı işler yapacaksanız, özellikle de kullanıcıdan numara bilgisi alacaksanız telefon numarası formatlamak önemli bir konu haline gelecektir.

Telefon numarası bilgisini veritabanından olduğu gibi ekrana bastırmak istemeyiz.

Kullanıcı da telefon numarası girerken boşluk, parantez, kısa çizgi vs ile formatlamayla uğraşmak istemez.

Bu nedenle telefon numarası ne kadar biçimsiz ve gelişigüzel de girilmiş olsa bizim bunu güzel bir formata sokmamız gerekiyor.

İşte telefon numarası formatlamak dersi de bunun için var 🙂

Telefon numarası formatlamak için onlarca CocoaPod kütüphanesi var onları da elbet kullanabilirsiniz fakat ben bu derste hiçbir ekstra kütüphane kullanmadan nasıl yapıldığını anlatacağım, sebebini ise dersin bitiminde söyleyeceğim.

 

Telefon Numarası Formatlamak: Örnek Uygulama

Örnek uygulamamızda kullanıcının bir telefon numarası girmesini isteyeceğiz ve bu telefon numarası ne kadar çirkin formatta da girilmiş olsa bunu kendi istediğimiz formata çevireceğiz.

 

Hemen başlayalım 🔨

 

SingleView bir proje yaratalım ve ekranın ortasına bir TextField sabitleyelim.

Telefon Numarası Eklemek: TextField

 

Placeholder eklemek güzel bir alışkanlık, bir de placeholder ekleyelim.

Telefon Numarası Eklemek: Place Holder

 

Telefon Numarası Formatlamak: Bağlantılar ve Delege

Assistant Editor’u açıp IBOutlet bağlantısını yapalım. Ayrıca UITextFieldDelegate sınıfını dahil edip bunu sınıfa eşitlememiz gerekiyor çünkü kullanıcının girdiği her karakteri takip etmek istiyoruz.

 

 

Telefon Numarası Formatlamak: Dokunmaya Duyarlı Klavye

Önce klavyenin dokunmaya duyarlı hale getirelim, manuel olarak açmayalım.

Aşağıdaki kodu ViewController sınıfına ekleyelim.

Şimdi TextField içine dokunduğumuzda klavye otomatik olarak açılacak, onun dışında bir yere dokunduğumuzda ise kapanacak.

 

Telefon Numarası Formatlamak: Phone Pad

Telefon numarası formatlamak için ilk adım kullanıcının gireceği karakterleri kısıtlamak 🙂

Bunun için kullanıcının klavyesini Phone pad e çevireceğiz.

Telefon Numarası Formatlamak: Phone Pad

 

Şu anda telefon numarası formatlamak ile ilgili henüz bişey yapmadık fakat klavyeyi telefon numarası gireceği şekilde kısıtladık.

Telefon Numarası Formatlamak: Formatsız Hali

 

 

Telefon Numarası Formatlamak: Aksiyon Zamanı 💣

Şimdi ViewController sınıfına aşağıdaki metodu ekleyelim.

 

Biçimlendirmek istediğimiz format (05xx) xxx-xxxx şeklinde. Dolayısıyla Swift’in built-in fonksiyonu olan replacingOccurences ile istediğimiz şekilde formatladık.

Siz başka şekilde formatlamak istiyorsanız metodu kendinize göre değiştirebilirsiniz.

 

Şimdi son bir şey kaldı.

 

UITextField ın shouldChangeCharactersIn adında bir delege fonksiyonu var. Bu fonksiyon sayesinde kullanıcının her eklemiş veya silmiş olduğu karaktere göre anında işlem almasını sağlayacağız.

Peki ne işlemi yaptıracağız?

Bu işlemleri zaten format fonksiyonunda belirttik. Dolayısıyla shouldChangeCharactersIn fonksiyonunu yazıp format fonksiyonunu çağırmak istediğimizi belirtmemiz gerekiyor.

 

Eğer textField phoneNumberTextField ına eşitse gibi bir koşula soktuk çünkü uygulamada aynı ekranda birden çok TextField olabilir değil mi? Telefon numarası formatlamak işini her TextField için yapmak istemeyiz 🙂

 

Projeyi çalıştıralım🔥

 

Sonuç

Telefon numarası formatlamak istediğimiz zaman sizinle paylaşmış olduğum bu metodu kullanabilirsiniz.

Aynı işi daha güzel daha basit çözen yöntemler elbet de var fakat bu durumda tercih etmek istemedim çünkü…

Bu işi yapan CocoaPod kütüphaneleri yaratmış olduğunuz telefon numarası TextField ına Custom Class eklemenizi isteyecek.

Telefon Numarası Formatlamak: Custom Class

 

Peki ya bu TextField için başka bir pod daha kullanmak isterseniz? Mesala MFTextField diye bir kütüphane var, bu kütüphane ile TextField ın görünümü çizgi halinde güzel bir tasarıma çevirebiliyorsunuz.

Hem bu kütüphaneyi hem de başka bir kütüphaneyi aynı objeye tanımlamak çoğu zaman hüsranla sonuçlanıyor. Bu yüzden podların birinden feragat edip bunu elle yazmanız bence çok daha iyi bir çözümdür.

TextField’a bahsettiğim metalik görüntüyü kazandırmak ve CocoaPods hakkında bilgi sahibi olmak için CocoaPods Kullanımı dersine bakabilirsiniz.

Ayrıca Bu TextField ın soluna güzel bir ikon bulup yerleştirmek çok daha profesyonel bir görünüm kazandıracaktır.

Telefon Numarası Formatlamak: İkon yerleştirmek

Böyle bir şey yapmak isteseniz TextField İçine Resim Koymak dersine göz atmanızı tavsiye ederim.

 

Örnek projenin kaynak koduna iOS Notları – Github sayfasından erişebilirsiniz.

 

Siz bu çözüm yolu hakkında ne düşünüyorsunuz? Yorum kısmında tartışalım.

 

İyi kodlamalar 💻