UITextField — یہ کیا ہے، ان پٹ فیلڈ سیٹ اپ اور کام کرنے کا اصول

مصنف: IT Sectr اشاعت: 2026-07-06 مطالعے کا وقت: 8 منٹ

UITextField iOS میں ایک سطر والے ٹیکسٹ ان پٹ کے لیے ایک معیاری UIKit جزو ہے، جو UIControl سے وراثت پاتا ہے اور کی بورڈ موڈز کی وسیع رینج کو سپورٹ کرتا ہے۔ Apple Developer دستاویزات (2025) کے مطابق، UITextField shouldBeginEditing، shouldChangeCharactersInRange اور shouldReturn کال بیکس کے ساتھ UITextFieldDelegate فراہم کرتا ہے۔ UITextView کے برعکس، UITextField ان پٹ کو ایک سطر تک محدود کرتا ہے اور کسٹم کنٹرولز کے لیے secureTextEntry، leftView اور rightView کو سپورٹ کرتا ہے۔ یہ iOS ایپلی کیشنز میں تصدیقی فارمز، تلاش، رجسٹریشن اور ڈیٹا ان پٹ کے لیے بنیادی عنصر ہے۔

اہم نکات

  • UITextField — ڈیلیگیٹ سپورٹ اور کسٹم کی بورڈز کے ساتھ ایک سطر والا UIKit ان پٹ فیلڈ
  • UIKeyboardType — 12 کی بورڈ اقسام: numberPad، emailAddress، URL، phonePad اور دیگر
  • UITextFieldDelegate — shouldBegin/End/Change کال بیکس کے ذریعے ان پٹ لائف سائیکل کا انتظام
  • Secure Text Entry — isSecureTextEntry کے ذریعے حروف کو نقطوں سے بدلنے والا پاس ورڈ موڈ
  • Left/Right View — UX بہتری کے لیے ان پٹ فیلڈ کے اندر کسٹم آئیکنز اور بٹن

UITextField کیا ہے

UITextField UIKit فریم ورک کا ایک کلاس ہے جو صارف کے ذریعے ایک سطر والے ٹیکسٹ ان پٹ کے لیے ڈیزائن کیا گیا ہے۔ یہ کلاس UIControl سے وراثت پاتی ہے، جو target-action میکانزم کے ذریعے ان پٹ ایونٹس کو سبسکرائب کرنے کی اجازت دیتی ہے: addTarget(self, action: Selector("textChanged:"), for: editingChanged)۔ UITextField ایک بارڈر (borderStyle)، فیلڈ خالی ہونے پر پلیس ہولڈر ٹیکسٹ، ایک صاف کرنے کا بٹن (clearButtonMode) ڈسپلے کرتا ہے اور بائیں/دائیں معاون ویوز پر مشتمل ہو سکتا ہے۔ فیلڈ becomeFirstResponder اور resignFirstResponder کے ذریعے فوکس حاصل کرنے/کھونے پر خود بخود کی بورڈ دکھاتا/چھپاتا ہے۔ فیلڈ کا سائز فونٹ اور بارڈر اسٹائل کی بنیاد پر intrinsicContentSize سے متعین ہوتا ہے۔ Interface Builder (Storyboard/XIB) میں UITextField بنانے کے لیے، Object Library استعمال کریں؛ پروگراماتی طور پر، انیشیالائزر UITextField(frame: CGRect) استعمال کریں۔ یہ کلاس جدید iOS آرکیٹیکچر کے ساتھ مکمل طور پر مطابقت رکھتی ہے: Combine publishers، UIViewRepresentable کے ذریعے SwiftUI میں @Published اور فارمز کے لیے Diffable Data Source۔

UIKeyboardType کی بورڈ اقسام

UITextField keyboardType پراپرٹی کے ذریعے 12 کی بورڈ اقسام کو سپورٹ کرتا ہے۔ ہر قسم ایک مخصوص ان پٹ منظر نامے کے لیے کریکٹر سیٹ کو بہتر بناتی ہے۔ UIKeyboardType.default — معیاری QWERTY کی بورڈ۔ UIKeyboardType.numberPad — اضافی علامتوں کے بغیر صرف ہندسے (PIN کوڈز اور فون نمبرز کے لیے مثالی)۔ UIKeyboardType.emailAddress — مرکزی پرت پر @ اور ڈاٹ والا کی بورڈ۔ UIKeyboardType.URL — مرکزی پرت پر .com، / اور ڈاٹ والا کی بورڈ۔ UIKeyboardType.phonePad — فون نمبر درج کرنے کے لیے +، *، # کے ساتھ عددی کی پیڈ۔ UIKeyboardType.decimalPad — قیمت درج کرنے کے لیے اعشاریہ نقطے کے ساتھ ہندسے۔ UIKeyboardType.webSearch — تلاش کے سوالات کے لیے بہتر کردہ Go بٹن والا کی بورڈ۔ UIKeyboardType.asciiCapable — لاطینی متن کے لیے صرف ASCII حروف۔ becomeFirstResponder کال کرنے پر کی بورڈ ظاہر ہوتا ہے اور resignFirstResponder کال کرنے پر چھپ جاتا ہے۔ کی بورڈ کی قسم تدوین کے دوران متحرک طور پر تبدیل کی جا سکتی ہے۔

قسممنظر نامہخصوصیات
defaultعام ٹیکسٹ ان پٹمعیاری QWERTY
numberPadPIN، کوڈصرف ہندسے 0-9
emailAddressای میلمرکزی پرت پر @ اور .
URLویب پتہمرکزی پر .com، /، .
phonePadفونہندسے، +، *، #
decimalPadقیمت، عددہندسے + اعشاریہ نقطہ

UITextFieldDelegate اور اس کے طریقے

UITextFieldDelegate ایک پروٹوکول ہے جو ان پٹ کے مختلف مراحل میں ٹیکسٹ فیلڈ کے رویے کی وضاحت کرتا ہے۔ اہم طریقے: textFieldShouldBeginEditing(textField) — ایک Bool لوٹاتا ہے جو تدوین شروع کرنے کی اجازت یا انکار کرتا ہے؛ textFieldDidBeginEditing — کی بورڈ ظاہر ہونے کے بعد کال کیا جاتا ہے؛ textFieldShouldEndEditing — چیک کرتا ہے کہ آیا تدوین مکمل کی جا سکتی ہے (اگر false ہے تو فیلڈ فوکس نہیں کھوتا)؛ textFieldDidEndEditing — کی بورڈ چھپنے کے بعد کال کیا جاتا ہے؛ textFieldShouldChangeCharactersInRange — ہر کریکٹر ان پٹ پر کال کیا جاتا ہے، ان پٹ کو فلٹر کرنے کی اجازت دیتا ہے (صرف ایک کریکٹر کی اجازت ہے، اگر false لوٹایا جائے تو کریکٹر شامل نہیں ہوگا)؛ textFieldShouldReturn — Return/Go/Next/Search دبانے پر کال کیا جاتا ہے، اگلے فیلڈ میں جانے کے لیے استعمال ہوتا ہے۔ ڈیلیگیٹ Optional نہیں ہے: تمام طریقوں کا ڈیفالٹ نفاذ ہے، لیکن کسٹم رویے کے لیے آپ کو متعلقہ طریقے کو اووررائڈ کرنا ہوگا۔

shouldReturn کے ذریعے فوکس کا انتظام

shouldReturn طریقہ فارم فیلڈز کے درمیان نیویگیٹ کرنے کا معیاری نمونہ ہے۔ نفاذ: textFieldShouldReturn(textField) — چیک کریں کہ کس textField نے ایونٹ کو متحرک کیا اور becomeFirstResponder() کے ذریعے فوکس کو اگلے فیلڈ پر منتقل کریں۔ اگر یہ آخری فیلڈ ہے تو کی بورڈ چھپانے کے لیے resignFirstResponder() کال کریں۔ فیلڈ ریفرنسز کو ذخیرہ کرنے کے لیے ہر فیلڈ کے لیے IBOutlet collection یا علیحدہ IBOutlet استعمال کریں۔

Secure Text Entry اور کسٹم left/right ویوز

isSecureTextEntry — UITextField کی ایک پراپرٹی ہے جو true ہونے پر درج کردہ حروف کو نقطوں (•) سے بدل دیتی ہے اور UIMenuController کے ذریعے ٹیکسٹ کاپی کرنے کو مسدود کرتی ہے۔ پاس ورڈ فیلڈز، PIN کوڈز، CVV کے لیے استعمال ہوتا ہے۔ محفوظ موڈ اور سادہ ٹیکسٹ (show/hide password) کے درمیان سوئچ کرتے وقت، textField.isSecureTextEntry.toggle() سیٹ کریں۔ اہم: isSecureTextEntry تبدیل کرنے پر فیلڈ کا ٹیکسٹ ری سیٹ ہو جاتا ہے — اسے پہلے محفوظ کریں۔ LeftView اور RightView کسٹم UIView ہیں جو ان پٹ فیلڈ کے اندر بائیں یا دائیں طرف ڈسپلے ہوتے ہیں۔ عام استعمال: leftView میں تلاش کا آئیکن، rightView میں "صاف کریں" بٹن۔ ترتیب: textField.leftViewMode = always (ہمیشہ) یا whileEditing (صرف تدوین کے دوران)۔ left/right ویوز پیڈنگ کو مدنظر رکھتے ہوئے خود بخود ٹیکسٹ فیلڈ کے اندر پوزیشن ہو جاتے ہیں۔ ویو کا سائز bounds یا Auto Layout کے ذریعے سیٹ کیا جاتا ہے۔

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

        // پاس ورڈ دکھائیں/چھپائیں حسب ضرورت بٹن
        let showButton = UIButton(type: .system)
        showButton.setTitle("دکھائیں", for: .normal)
        showButton.addTarget(self, action: #selector(togglePasswordVisibility),
                       for: .touchUpInside)
        passwordField.rightView = showButton
        passwordField.rightViewMode = .always
    }

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

UITextInputTraits ترتیب

UITextInputTraits ایک پروٹوکول ہے جو UITextField کے لیے کی بورڈ کی بصری اور رویاتی شکل کی وضاحت کرتا ہے۔ اہم پراپرٹیز: autocorrectionType (.default, .no, .yes) — ٹیکسٹ آٹو کریکشن کو فعال یا غیر فعال کرتا ہے؛ autocapitalizationType (.none, .words, .sentences, .allCharacters) — پہلے حرف کے لیے خودکار کیپس لاک؛ spellCheckingType — ہجے کی جانچ؛ returnKeyType (.done, .go, .next, .search, .send, .continue, .join, .route, .emergencyCall) — کی بورڈ پر Return بٹن کا متن؛ enablesReturnKeyAutomatically — فیلڈ خالی ہونے پر Return بٹن کا خودکار غیر فعال کرنا۔ نام کے ان پٹ فیلڈز کے لیے autocapitalizationType = .words، ای میل کے لیے autocorrectionType = .no، URL کے لیے keyboardType = .URL + autocapitalizationType = .none استعمال کریں۔ پراپرٹیز فیلڈ کے ڈسپلے ہونے سے پہلے اس کی ابتدا کے بعد ترتیب دی جاتی ہیں۔ پراپرٹیز کو متحرک طور پر تبدیل کرنے سے اگلی ظاہری شکل پر کی بورڈ اپ ڈیٹ ہو جاتا ہے۔

Return Key Type اور فارم نیویگیشن

Return Key Type کی بورڈ پر بٹن کا متن متعین کرتا ہے: Next — اگلے فیلڈ پر جائیں، Done — ان پٹ مکمل کریں، Search — تلاش شروع کریں، Send — فارم جمع کروائیں، Continue — بھرنا جاری رکھیں۔ shouldReturn ڈیلیگیٹ طریقہ کے ساتھ مل کر، returnKeyType ایک قدرتی UX ممکن بناتا ہے: صارف فیلڈ بھرتا ہے، اگلے پر جانے کے لیے Next دباتا ہے اور آخری فیلڈ پر جمع کروانے کے لیے Done دباتا ہے۔ بٹن ٹیکسٹ کی تخصیص کے لیے، iOS 15+ میں UIButtonConfiguration استعمال کریں۔

پلیس ہولڈر، فارمیٹنگ اور ان پٹ ماسک

UITextField پلیس ہولڈر وہ متن ہے جو فیلڈ خالی ہونے پر بھوری رنگ میں ڈسپلے ہوتا ہے۔ ترتیب: textField.placeholder = "Enter email"۔ پلیس ہولڈر کے رنگ اور فونٹ کو حسب ضرورت بنانے کے لیے، NSAttributedString کے ساتھ attributedPlaceholder استعمال کریں۔ ان پٹ ماسک ڈیلیگیٹ طریقہ shouldChangeCharactersInRange کے ذریعے نافذ کیا جاتا ہے — فون نمبر، تاریخ، کریڈٹ کارڈ اور SNILS فارمیٹس کو سپورٹ کرتا ہے۔ ان پٹ ماسک ڈسپلے کو ویلیو سے الگ کرنے کی اجازت دیتا ہے: صارف فارمیٹ شدہ متن دیکھتا ہے (مثال کے طور پر، +7 (999) 999-99-99)، جبکہ ماڈل "79999999999" ذخیرہ کرتا ہے۔ نفاذ کی مثال: ماسک کو تبدیل کرنے کے لیے X حروف والی سٹرنگ کے طور پر اسٹور کریں؛ ہر ان پٹ پر، فارمیٹ شدہ سٹرنگ بنائیں اور shouldChangeCharactersInRange میں false لوٹائیں، textField.text = formattedText کے ذریعے فیلڈ ٹیکسٹ تبدیل کریں۔ نمبروں کے لیے، NumberFormatter اور decimal keyboardType استعمال کریں۔

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 {
        // ای میل میں خالی جگہیں روکیں
        if textField == emailField && string == " " {
            return false
        }
        // پاس ورڈ کی لمبائی کی حد
        if textField == passwordField {
            let newLength = (textField.text?.count ?? 0) +
                string.count - range.length
            return newLength <= 32
        }
        return true
    }
}

کوڈ مثالیں: تصدیق اور فارم

آئیے UITextField، ای میل کی تصدیق اور بصری فیڈ بیک کے ساتھ لاگ ان فارم کے نفاذ کی ایک مکمل مثال دیکھتے ہیں۔ فارم میں دو فیلڈ ہیں: emailField (emailAddress کی بورڈ، کوئی آٹو کریکشن نہیں) اور passwordField (secureTextEntry)۔ تصدیق shouldChangeCharactersInRange میں اور اضافی طور پر Login بٹن دبانے پر کی جاتی ہے۔ بصری فیڈ بیک کے لیے: غلطی پر سرخ بارڈر (layer.borderColor)، کامیاب تصدیق پر سبز۔ textFieldDidBeginEditing میں تدوین شروع ہونے پر بارڈر ری سیٹ۔

ریگولر ایکسپریشن کے ساتھ ای میل کی تصدیق

ای میل کی تصدیق فارمیٹ "SELF MATCHES %@" کے ساتھ NSPredicate اور بنیادی فارمیٹ جانچ کے لیے ریگولر ایکسپریشن کے ذریعے کی جاتی ہے۔ ای میل کے حقیقی وجود کی جانچ سرور پر کی جانی چاہیے۔ جدید تصدیق کے لیے، SwiftValidators لائبریری یا Combine publishers استعمال کریں۔ مثال: NSPredicate(format: "SELF MATCHES [c] %@", emailRegex).evaluate(with: email)۔ ہموار منتقلی کے لیے فیلڈ بارڈر ایک اینیمیشن بلاک کے ذریعے اپ ڈیٹ ہوتا ہے۔

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
    }
}

اکثر پوچھے گئے سوالات

UITextField میں حروف کی تعداد کیسے محدود کریں؟

ڈیلیگیٹ طریقہ shouldChangeCharactersInRange استعمال کریں۔ نئے ٹیکسٹ کی لمبائی existingText.count + newText.count - range.length کے طور پر حساب کریں اور اگر حد سے تجاوز ہو جائے تو false لوٹائیں۔ متبادل: addTarget کے ذریعے editingChanged ایونٹ کو سبسکرائب کریں اور textField.text = String(text.prefix(maxLength)) استعمال کرکے ٹیکسٹ چھوٹا کریں۔

UITextField چھونے پر ردعمل کیوں نہیں دے رہا؟

چیک کریں: isUserInteractionEnabled = true (ڈیفالٹ)، ڈیلیگیٹ shouldBeginEditing میں false نہیں لوٹا رہا۔ اگر فیلڈ UIScrollView کے اندر ہے تو delaysContentTouches کو غیر فعال کریں۔ اگر فیلڈ موڈل کنٹرولر میں ہے تو چیک کریں کہ یہ چھونے کو مسدود نہیں کر رہا۔ SwiftUI UIViewRepresentable کے لیے، چیک کریں کہ فیلڈ DispatchQueue.main.async کے ذریعے درست طریقے سے firstResponder بن رہا ہے۔

UITextField کے باہر ٹیپ کرکے کی بورڈ کیسے چھپائیں؟

self.view یا scrollView پر UITapGestureRecognizer شامل کریں جس کا target-action view.endEditing(true) کال کرتا ہے۔ متبادل: کسی مخصوص فیلڈ کا کی بورڈ چھپانے کے لیے textField.resignFirstResponder()۔ UIViewController میں touchesBegan نافذ کریں یا خودکار کی بورڈ انتظام کے لیے IQKeyboardManager لائبریری استعمال کریں۔ بٹنوں کے صحیح کام کے لیے cancelsTouchesInView کو غیر فعال کرنا نہ بھولیں۔

UITextField کا ٹیکسٹ رنگ اور فونٹ کیسے تبدیل کریں؟

ٹیکسٹ رنگ: textField.textColor = UIColor.label۔ فونٹ: textField.font = UIFont.systemFont(ofSize: 16, weight: .regularپلیس ہولڈر رنگ: textField.attributedPlaceholder = NSAttributedString(string: "Email", attributes: [.foregroundColor: UIColor.secondaryLabel])۔

UITextField کو صرف پڑھنے کے لیے کیسے بنایا جائے؟

تین طریقے: isEnabled = false (ظاہری شکل بدل دیتا ہے)، isUserInteractionEnabled = false (بصری انداز برقرار رکھتا ہے)، یا textFieldShouldBeginEditing ڈیلیگیٹ میں false لوٹائیں۔ تیسرا طریقہ ترجیحی ہے — یہ بصری انداز کو تبدیل کیے بغیر ان پٹ کو مسدود کرتا ہے۔ صرف پڑھنے کے موڈ میں پروگراماتی طور پر ٹیکسٹ سیٹ کرنے کے لیے، ڈیلیگیٹ استعمال کریں۔

خلاصہ

  • UITextField — UIControl سے وراثت پانے والا اور ڈیلیگیٹ انتظام کے ساتھ ایک سطر والا UIKit ان پٹ فیلڈ
  • UIKeyboardType — مختلف منظرناموں کے لیے 12 کی بورڈ اقسام: email، URL، numberPad، phonePad
  • UITextFieldDelegate — ان پٹ انتظام کے لیے shouldBegin/End/Change/Return طریقوں والا پروٹوکول
  • Secure Text Entry — isSecureTextEntry کے ذریعے حروف کو نقطوں سے بدلنے والا پاس ورڈ موڈ
  • Left/Right View — always/whileEditing موڈز کے ساتھ فیلڈ کے اندر کسٹم عناصر (آئیکنز، بٹن)
  • Return Key Type — فارم نیویگیشن کے لیے Return بٹن ترتیب: Next، Done، Search، Send
  • تصدیق — shouldChangeCharactersInRange کے ذریعے regex اور بارڈر کے ذریعے بصری فیڈ بیک
  • پلیس ہولڈر کسٹم اسٹائلنگ کے لیے NSAttributedString کے ساتھ attributedPlaceholder کے ذریعے ترتیب دیا جاتا ہے

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں