UITextField — nədir, mətn daxiletmə sahəsinin konfiqurasiyası və iş prinsipi

Müəllif: IT Sectr Dərc olunub: 2026-07-06 Oxuma vaxtı: 8 dəq

UITextField — iOS-da tək sətirli mətn daxil etmək üçün standart UIKit komponentidir, UIControl-dan miras alır və geniş klaviatura rejimlərini dəstəkləyir. Apple Developer (2025) sənədləşməsinə görə, UITextField shouldBeginEditing, shouldChangeCharactersInRange və shouldReturn callback-ləri ilə UITextFieldDelegate delegatını təmin edir. UITextView-dən fərqli olaraq, UITextField daxilolmanı bir sətirlə məhdudlaşdırır və xüsusi nəzarət elementləri üçün secureTextEntry, leftView və rightView-i dəstəkləyir. Bu, iOS proqramlarında giriş, axtarış, qeydiyyat və məlumat daxil etmə formaları üçün əsas elementdir.

Əsas məqamlar

  • UITextField — delegat və xüsusi klaviaturalar dəstəyi ilə UIKit-in tək sətirli mətn daxiletmə sahəsi
  • UIKeyboardType — 12 klaviatura növü: numberPad, emailAddress, URL, phonePad və digərləri
  • UITextFieldDelegate — shouldBegin/End/Change callback-ləri vasitəsilə daxiletmə həyat dövrünün idarə edilməsi
  • Secure Text Entry — isSecureTextEntry vasitəsilə simvolların nöqtələrlə əvəz edilməsi ilə şifrə daxiletmə rejimi
  • Left/Right View — UX təkmilləşdirmələri üçün daxiletmə sahəsinin içərisində xüsusi nişanlar və düymələr

UITextField nədir

UITextField — istifadəçi tərəfindən tək sətirli mətn daxil etmək üçün nəzərdə tutulmuş UIKit freymvork sinifidir. Sinif UIControl-dan miras alır ki, bu da target-action mexanizmi vasitəsilə daxiletmə hadisələrinə abunə olmağa imkan verir: addTarget(self, action: Selector("textChanged:"), for: editingChanged). UITextField çərçivə (borderStyle), boş sahədə placeholder mətni, təmizləmə düyməsi (clearButtonMode) göstərir və sol/sağ köməkçi view-lər ehtiva edə bilər. Sahə avtomatik olaraq becomeFirstResponder və resignFirstResponder vasitəsilə fokus qəbul edərkən/itirərkən klaviaturanı göstərir/gizlədir. Sahənin ölçüsü font və border style əsasında intrinsicContentSize ilə müəyyən edilir. Interface Builder-də (Storyboard/XIB) UITextField yaratmaq üçün Object Library istifadə olunur, proqramlı şəkildə — UITextField(frame: CGRect) initləşdiricisi vasitəsilə. Sinif müasir iOS arxitekturası ilə tam uyğundur: Combine publishers, SwiftUI-də UIViewRepresentable vasitəsilə @Published və formalar üçün Diffable Data Source.

UIKeyboardType klaviatura növləri

UITextField keyboardType xüsusiyyəti vasitəsilə 12 klaviatura növünü dəstəkləyir. Hər bir növ müəyyən daxiletmə ssenarisi üçün simvol dəstini optimallaşdırır. UIKeyboardType.default — standart QWERTY klaviaturası. UIKeyboardType.numberPad — əlavə simvollar olmadan yalnız rəqəmlər (PIN-kodlar və telefon nömrələri üçün ideal). UIKeyboardType.emailAddress — əsas təbəqədə @ və nöqtə simvolu olan klaviatura. UIKeyboardType.URL — əsas təbəqədə .com, / və . olan klaviatura. UIKeyboardType.phonePad — telefon nömrələri daxil etmək üçün +, *, # ilə rəqəm klaviaturası. UIKeyboardType.decimalPad — qiymət daxil etmək üçün onluq nöqtəsi olan rəqəmlər. UIKeyboardType.webSearch — Go düyməsi və axtarış sorğuları üçün optimallaşdırma ilə klaviatura. UIKeyboardType.asciiCapable — Latın əlifbası üçün yalnız ASCII simvolları. Klaviatura becomeFirstResponder çağırıldıqda göstərilir və resignFirstResponder çağırıldıqda gizlənir. Klaviatura növü redaktə zamanı dinamik olaraq dəyişdirilə bilər.

NövSsenariXüsusiyyətlər
defaultÜmumi mətn daxiletməStandart QWERTY
numberPadPIN, kodYalnız 0-9 rəqəmləri
emailAddressE-poçt@ və . əsas təbəqədə
URLVeb-ünvan.com, /, . əsasda
phonePadTelefonRəqəmlər, +, *, #
decimalPadQiymət, ədədRəqəmlər + onluq nöqtə

UITextFieldDelegate delegatı və onun metodları

UITextFieldDelegate — mətn sahəsinin davranışını daxiletmənin müxtəlif mərhələlərində müəyyən edən protokoldur. Əsas metodlar: textFieldShouldBeginEditing(textField) — redaktəyə başlamağa icazə verən və ya qadağan edən Bool qaytarır; textFieldDidBeginEditing — klaviatura göründükdən sonra çağırılır; textFieldShouldEndEditing — redaktənin bitirilə biləcəyini yoxlayır (false olduqda sahə fokusu itirmir); textFieldDidEndEditing — klaviatura gizləndikdən sonra çağırılır; textFieldShouldChangeCharactersInRange — hər simvol daxil edildikdə çağırılır, daxilolmanı filtrləməyə imkan verir (yalnız bir simvola icazə verilir, false qaytarılarsa simvol əlavə edilməyəcək); textFieldShouldReturn — Return/Go/Next/Search basıldıqda çağırılır, növbəti sahəyə keçmək üçün istifadə olunur. Delegat Optional deyil: bütün metodların standart tətbiqi var, lakin xüsusi davranış üçün müvafiq metodu override etmək lazımdır.

shouldReturn vasitəsilə fokusun idarə edilməsi

shouldReturn metodu — forma sahələri arasında naviqasiya üçün standart nümunədir. Tətbiq: textFieldShouldReturn(textField) — hansı textField-in hadisəni çağırdığını yoxlayırıq və becomeFirstResponder() vasitəsilə fokusu növbəti sahəyə keçiririk. Əgər bu son sahədirsə — klaviaturanı gizlətmək üçün resignFirstResponder() çağırırıq. Sahələrə istinadları saxlamaq üçün IBOutlet collection və ya hər sahə üçün ayrıca IBOutlet istifadə edin.

Secure Text Entry və xüsusi left/right view

isSecureTextEntry — UITextField-in xüsusiyyəti, true olduqda daxil edilən simvolları nöqtələrlə (•) əvəz edir və UIMenuController vasitəsilə mətnin kopyalanmasını bloklayır. Şifrə, PIN-kod, CVV sahələri üçün istifadə olunur. Secure rejim və adi mətn arasında keçid edərkən (show/hide password) textField.isSecureTextEntry.toggle() təyin edin. Əhəmiyyətli: isSecureTextEntry dəyişdirilərkən sahənin mətni sıfırlanır — onu əvvəlcədən qeyd edin. LeftViewRightView — daxiletmə sahəsinin içərisində solda və ya sağda göstərilən xüsusi UIView-lərdir. Tipik istifadə: leftView-də axtarış nişanı, rightView-də "Təmizlə" düyməsi. Konfiqurasiya: textField.leftViewMode = always (həmişə) və ya whileEditing (yalnız redaktə zamanı). Left/right view avtomatik olaraq mətn sahəsinin içərisində padding nəzərə alınmaqla yerləşdirilir. View-in ölçüsü bounds və ya Auto Layout ilə təyin edilir.

swift
import UIKit

class LoginViewController: UIViewController {
    let passwordField = UITextField()

    override func viewDidLoad() {
        super.viewDidLoad()
        passwordField.isSecureTextEntry = true
        passwordField.placeholder = "Password"
        passwordField.keyboardType = .asciiCapable
        passwordField.delegate = self

        // Şifrə göstər/gizlə üçün xüsusi düymə
        let showButton = UIButton(type: .system)
        showButton.setTitle("Göstər", for: .normal)
        showButton.addTarget(self, action: #selector(togglePasswordVisibility),
                       for: .touchUpInside)
        passwordField.rightView = showButton
        passwordField.rightViewMode = .always
    }

    @objc func togglePasswordVisibility() {
        passwordField.isSecureTextEntry.toggle()
    }
}

UITextInputTraits konfiqurasiyası

UITextInputTraits — UITextField üçün klaviaturanın vizual və davranış tənzimlənməsini müəyyən edən protokoldur. Əsas xüsusiyyətlər: autocorrectionType (.default, .no, .yes) — mətnin avtokorreksiyasını aktivləşdirir və ya söndürür; autocapitalizationType (.none, .words, .sentences, .allCharacters) — ilk simvol üçün avtomatik Caps Lock; spellCheckingType — orfoqrafiya yoxlanışı; returnKeyType (.done, .go, .next, .search, .send, .continue, .join, .route, .emergencyCall) — klaviaturada Return düyməsinin mətni; enablesReturnKeyAutomatically — boş sahədə Return düyməsinin avtomatik bloklanması. Ad daxiletmə sahələri üçün autocapitalizationType = .words, e-poçt üçün — autocorrectionType = .no, URL üçün — keyboardType = .URL + autocapitalizationType = .none istifadə edin. Traits konfiqurasiyası sahənin initləşdirilməsindən sonra, göstərilməzdən əvvəl həyata keçirilir. Traits-in dəyişdirilməsi növbəti görünmədə klaviaturanı dinamik olaraq yeniləyir.

Return Key Type və forma üzrə naviqasiya

Return Key Type klaviaturada düymənin mətnini müəyyən edir: Next — növbəti sahəyə keç, Done — daxilolmanı bitir, Search — axtarışı başlat, Send — formanı göndər, Continue — doldurmağa davam et. shouldReturn delegat metodu ilə birlikdə, returnKeyType təbii UX yaratmağa imkan verir: istifadəçi növbəti sahəyə keçmək üçün Next, son sahədə göndərmək üçün Done düyməsini basır. Düymə mətnini fərdiləşdirmək üçün iOS 15+ də UIButtonConfiguration istifadə edin.

Placeholder, formatlaşdırma və daxiletmə maskası

Placeholder UITextField — sahə boş olduqda boz rənglə göstərilən mətndir. Konfiqurasiya: textField.placeholder = "Enter email". Placeholder rəngini və şriftini fərdiləşdirmək üçün NSAttributedString ilə attributedPlaceholder istifadə edin. Daxiletmə maskası shouldChangeCharactersInRange delegat metodu vasitəsilə tətbiq edilir — telefon nömrəsi, tarix, kredit kartı, SNILS formatı dəstəklənir. Daxiletmə maskası göstərilməni və dəyəri ayırmağa imkan verir: istifadəçi formatlaşdırılmış mətn görür (məsələn, +7 (999) 999-99-99), modeldə isə "79999999999" saxlanılır. Tətbiq nümunəsi: maskanı əvəz üçün X simvolları olan sətir kimi saxlayırıq; hər daxiletmədə formatlaşdırılmış sətir yaradırıq və shouldChangeCharactersInRange-də false qaytarırıq, sahənin mətnini textField.text = formattedText vasitəsilə əvəz edirik. Rəqəmlər üçün NumberFormatter və onluq keyboardType istifadə edin.

swift
extension LoginViewController: UITextFieldDelegate {
    func textFieldShouldReturn(
        textField: UITextField
    ) -> Bool {
        if textField == emailField {
            passwordField.becomeFirstResponder()
        } else if textField == passwordField {
            textField.resignFirstResponder()
            loginTapped()
        }
        return true
    }

    func textField(
        textField: UITextField,
        shouldChangeCharactersIn range: NSRange,
        replacementString string: String
    ) -> Bool {
        // E-poçtda boşluqları blokla
        if textField == emailField && string == " " {
            return false
        }
        // Şifrə uzunluğu limiti
        if textField == passwordField {
            let newLength = (textField.text?.count ?? 0) +
                string.count - range.length
            return newLength <= 32
        }
        return true
    }
}

Kod nümunələri: validasiya və forma

UITextField ilə giriş formasının, e-poçt validasiyası və vizual əks-əlaqə ilə tam tətbiq nümunəsini nəzərdən keçirək. Forma iki sahədən ibarətdir: emailField (emailAddress klaviatura, no autocorrection) və passwordField (secureTextEntry). Validasiya shouldChangeCharactersInRange-də və əlavə olaraq Login düyməsi basıldıqda həyata keçirilir. Vizual əks-əlaqə üçün: səhv olduqda qırmızı çərçivə (layer.borderColor), uğurlu validasiyada — yaşıl. Redaktə başlayanda çərçivənin sıfırlanması textFieldDidBeginEditing-də.

Regex ilə e-poçt validasiyası

E-poçt validasiyası "SELF MATCHES %@" formatı ilə NSPredicate və formatın əsas yoxlanışı üçün müntəzəm ifadə vasitəsilə həyata keçirilir. E-poçtun mövcudluğunun real yoxlanışı serverdə aparılmalıdır. Qabaqcıl validasiya üçün SwiftValidators kitabxanası və ya Combine publishers istifadə edin. Nümunə: NSPredicate(format: "SELF MATCHES [c] %@", emailRegex).evaluate(with: email). Sahənin çərçivəsi hamar keçid üçün animation block vasitəsilə yenilənir.

swift
func validateEmail(textField: UITextField) {
    guard let text = textField.text, !text.isEmpty else {
        textField.layer.borderColor = UIColor.clear.cgColor
        return
    }

    let emailRegex = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.\\p{L}{2,}"
    let predicate = NSPredicate(format: "SELF MATCHES [c] %@", emailRegex)
    let isValid = predicate.evaluate(with: text)

    UIView.animate(withDuration: 0.2) {
        textField.layer.borderColor = isValid
            ? UIColor.systemGreen.cgColor
            : UIColor.systemRed.cgColor
        textField.layer.borderWidth = 1.0
        textField.layer.cornerRadius = 6.0
    }
}

Tez-tez verilən suallar

UITextField-də simvol sayını necə məhdudlaşdırmaq olar?

shouldChangeCharactersInRange delegat metodundan istifadə edin. Mətnin yeni uzunluğunu existingText.count + newText.count - range.length kimi hesablayın və limit aşılıbsa false qaytarın. Alternativ: addTarget vasitəsilə editingChanged hadisəsinə abunə olun və mətni textField.text = String(text.prefix(maxLength)) vasitəsilə qısaldın.

Niyə UITextField toxunmaya reaksiya vermir?

Yoxlayın: isUserInteractionEnabled = true (standart), delegat shouldBeginEditing-də false qaytarmır. Sahə UIScrollView daxilindədirsə — delaysContentTouches-i söndürün. Sahə modal kontrollerdədirsə — onun toxunmaları bloklamadığını yoxlayın. SwiftUI UIViewRepresentable üçün sahənin DispatchQueue.main.async vasitəsilə düzgün firstResponder olduğunu yoxlayın.

UITextField-dən kənara toxunaraq klaviaturanı necə gizlətmək olar?

UITapGestureRecognizer-i self.view və ya scrollView-ə view.endEditing(true) çağıran target-action ilə əlavə edin. Alternativ: konkret sahənin klaviaturasını gizlətmək üçün textField.resignFirstResponder(). UIViewController-də touchesBegan konfiqurasiya edin və ya avtomatik klaviatura idarəetməsi üçün IQKeyboardManager kitabxanasından istifadə edin. Düymələrin düzgün işləməsi üçün cancelsTouchesInView-i söndürməyi unutmayın.

UITextField-in mətn rəngini və şriftini necə dəyişmək olar?

Mətn rəngi: textField.textColor = UIColor.label. Şrift: textField.font = UIFont.systemFont(ofSize: 16, weight: .regular). Placeholder rəngi: textField.attributedPlaceholder = NSAttributedString(string: "Email", attributes: [.foregroundColor: UIColor.secondaryLabel]).

UITextField-i yalnız oxumaq üçün necə etmək olar?

Üç üsul: isEnabled = false (görünüşü dəyişir), isUserInteractionEnabled = false (vizual stili saxlayır) və ya delegatın textFieldShouldBeginEditing-də false qaytarın. Üçüncü üsul daha üstündür — vizual stili dəyişmədən daxilolmanı bloklayır. Yalnız oxumaq rejimində mətni proqramlı şəkildə təyin etmək üçün delegatdan istifadə edin.

Nəticə

  • UITextField — UIControl-dan miras alma və delegat idarəetməsi ilə UIKit-in tək sətirli mətn daxiletmə sahəsi
  • UIKeyboardType — müxtəlif ssenarilər üçün 12 klaviatura növü: email, URL, numberPad, phonePad
  • UITextFieldDelegate — daxilolmanı idarə etmək üçün shouldBegin/End/Change/Return metodları olan protokol
  • Secure Text Entry — isSecureTextEntry vasitəsilə simvolları nöqtələrlə əvəz edən şifrə rejimi
  • Left/Right View — always/whileEditing rejimləri ilə sahə daxilində xüsusi elementlər (nişanlar, düymələr)
  • Return Key Type — forma naviqasiyası üçün Return düyməsinin konfiqurasiyası: Next, Done, Search, Send
  • Validasiya — regex ilə shouldChangeCharactersInRange və haşiyə vasitəsilə vizual əks-əlaqə
  • Placeholder xüsusi stil üçün NSAttributedString ilə attributedPlaceholder vasitəsilə konfiqurasiya edilir

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun