Input Mask ایک ان پٹ فارمیٹنگ ٹیمپلیٹ ہے جو صارف کے ٹائپ کرتے ہی خودکار طور پر جدا کار شامل کرتا ہے۔ iOS میں، ان پٹ ماسک UITextFieldDelegate ڈیلیگیٹ اور RedMadRobot کے InputMask جیسی تھرڈ پارٹی لائبریریوں کے ذریعے لاگو کیے جاتے ہیں۔ Apple Human Interface Guidelines (2025) کے مطابق، ان پٹ ماسک کے استعمال سے فارم بھرنے کی رفتار 35% بڑھ جاتی ہے اور ان پٹ کی غلطیاں 55% کم ہو جاتی ہیں۔ فکسڈ فارمیٹ والے تمام فیلڈز پر ماسک لگائیں: فون، کارڈ نمبر، تاریخیں، SNILS اور کوڈز۔
اہم نکات
Input Mask (ان پٹ ماسک) ایک طریقہ کار ہے جو ان پٹ ڈیٹا کے لیے ایک ٹیمپلیٹ متعین کرتا ہے اور ٹائپ کرتے ہی ٹیکسٹ کو خودکار طور پر فارمیٹ کرتا ہے۔ صارف صرف اہم حروف (ہندسے، حروف) داخل کرتا ہے اور سسٹم خودکار طور پر جدا کار شامل کرتا ہے: خالی جگہیں، ڈیش، قوسین، سلیش۔ یہ پوسٹ پروسیسنگ سے بنیادی فرق ہے، جہاں ڈیٹا ان پٹ مکمل ہونے کے بعد فارمیٹ کیا جاتا ہے۔
ان پٹ ماسک صارف کے تجربے کے تین مسائل حل کرتے ہیں۔ پہلا — علمی بوجھ: صارف کو ڈیٹا کا فارمیٹ یاد رکھنے اور دستی طور پر جدا کار لگانے کی ضرورت نہیں۔ دوسرا — ان پٹ کی رفتار: جدا کاروں کا خودکار اضافہ اور اگلے حرف گروپ میں منتقلی ٹائپنگ کو تیز کرتی ہے۔ تیسرا — ڈیٹا کا معیار: ماسک اس بات کی ضمانت دیتا ہے کہ ڈیٹا بغیر کسی تغیر کے یکساں فارمیٹ میں جمع کیا جائے گا۔
پہلے سے درج کردہ ڈیٹا کی ڈسپلے سطح پر کام کرنے والے NSFormatter فارمیٹرز کے برعکس، ان پٹ ماسک ان پٹ کی سطح پر کام کرتا ہے: یہ درج کیے جانے والے ہر حرف کو کنٹرول کرتا ہے اور تعین کرتا ہے کہ آیا یہ ماسک کی موجودہ پوزیشن پر قابل اجازت ہے۔ اگر کوئی حرف ماسک سے مطابقت نہیں رکھتا تو اسے مسترد یا نظر انداز کر دیا جاتا ہے۔
Apple UX تحقیق (2024) کے مطابق، ان پٹ ماسک ان فیلڈز کے لیے سب سے زیادہ مؤثر ہیں جہاں صارف غیر مانوس فارمیٹ میں ڈیٹا درج کرتا ہے۔ مثال کے طور پر، SNILS (000-000-000 00) یا INN (000000000000) — صارف کو ہندسوں کی صحیح تعداد یا جدا کاروں کی جگہ کا علم نہیں ہو سکتا اور ماسک بصری طور پر صحیح فارمیٹ تجویز کرتا ہے۔
ماسک کا نحو InputMask لائبریری میں پلیس ہولڈر حروف اور مستقل حروف کا مجموعہ استعمال کرتا ہے۔ پلیس ہولڈر ہر پوزیشن پر قابل اجازت حرف کی قسم متعین کرتے ہیں: ہندسوں کے لیے 0 یا 9، حروف کے لیے A، کسی بھی حرف کے لیے _۔ مستقل حروف وہ جدا کار ہیں جو خودکار طور پر شامل ہوتے ہیں: خالی جگہیں، ڈیش، قوسین، نقطے، سلیش۔
مربع بریکٹ [0] ایک لازمی حرف کی نشاندہی کرتے ہیں — صارف کو اس پوزیشن پر ایک ہندسہ درج کرنا ہوگا۔ گھنگریالے بریکٹ {0} ایک اختیاری حرف کی نشاندہی کرتے ہیں — اگر صارف بلاک چھوڑ دیتا ہے تو ماسک متعلقہ جدا کار شامل نہیں کرتا۔ مثال کے طور پر، تاریخ کے لیے ماسک [00]{.}[00]{.}[0000]: اگر صارف مہینہ درج نہیں کرتا تو دن کے بعد کا جدا کار بھی ظاہر نہیں ہوتا۔
مربع اور گھنگریالے بریکٹ کے باہر کے مستقل حروف لاحقہ ہیں — یہ ہمیشہ ظاہر ہوتے ہیں، چاہے فیلڈ خالی ہو۔ مثال کے طور پر، ماسک +7 ([000]) [000]-[00]-[00] میں حروف +7، (، )، خالی جگہ اور ڈیش لاحقہ ہیں اور صارف انہیں حذف نہیں کر سکتا۔ لاحقہ صارف کو ان پٹ شروع کرنے سے پہلے ہی متوقع فارمیٹ سمجھنے میں مدد دیتا ہے۔
| حرف | معنی | مثال |
|---|---|---|
| 0 | ہندسہ (لازمی) | [0000] — 4 ہندسے |
| 9 | ہندسہ (اختیاری) | [99] — 0-2 ہندسے |
| A | حرف (لازمی) | [AA] — 2 حروف |
| _ | کوئی بھی حرف | [_] — کوئی بھی 1 حرف |
| مستقل | جدا کار | -، .، /، خالی جگہ |
ان پٹ ماسک ان کے ڈیزائن کردہ ڈیٹا کی قسم کے مطابق درجہ بندی کیے جاتے ہیں۔ ہر قسم کا اپنا ڈھانچہ، گروپوں کی تعداد اور جدا کاروں کی جگہ ہوتی ہے۔ ماسک کا صحیح انتخاب صارف کے تجربے کے لیے اہم ہے — اگر ماسک صارف کی توقعات سے مطابقت نہیں رکھتا تو وہ خودکار طور پر شامل کردہ حروف کو حذف کر دے گا۔
فون ماسک سب سے عام قسم ہیں۔ روسی نمبر +7 ([000]) [000]-[00]-[00] کے طور پر، امریکی نمبر +1 ([000]) [000]-[0000] کے طور پر فارمیٹ ہوتا ہے۔ ماسک کو ملک اور شہر کے کوڈ میں مختلف تعداد میں ہندسوں کی حمایت کرنی چاہیے۔ InputMask لائبریری ترجیحی ماسک کی حمایت کرتی ہے: اگر پہلا ماسک مناسب نہیں ہے (صارف نے مختلف ملکی کوڈ درج کیا ہے)، تو دوسرا لاگو ہوتا ہے۔
کارڈ نمبروں کے لیے ماسک [0000] [0000] [0000] [0000] 4 ہندسوں کے گروپوں کے درمیان خالی جگہوں کے ساتھ استعمال ہوتا ہے۔ اضافی طور پر، میعاد ختم ہونے کی تاریخ [00]/[00] اور CVV کوڈ [000] کے لیے ماسک لگایا جا سکتا ہے۔ کارڈ نمبر کا ماسک ادائیگی کے نظام کے لحاظ سے 16–19 ہندسوں کی حمایت کرتا ہے: Visa اور Mastercard — 16 ہندسے، American Express — 15، Maestro — 12–19۔
تاریخ کے ماسک جدا کار کے طور پر نقطے یا سلیش کے ساتھ فارمیٹ [00]{.}[00]{.}[0000] استعمال کرتے ہیں۔ INN، SNILS اور دیگر شناخت کنندگان کے لیے مخصوص ماسک استعمال ہوتے ہیں: INN — [000000000000] (12 ہندسے)، SNILS — [000]-[000]-[000] [00] (ڈیش کے ساتھ 11 ہندسے)۔ تصدیقی کوڈز کے لیے — لمبائی کے لحاظ سے [0000] یا [000000]۔
| ڈیٹا کی قسم | ماسک | مثال |
|---|---|---|
| فون | +7 ([000]) [000]-[00]-[00] | +7 (912) 345-67-89 |
| کارڈ | [0000] [0000] [0000] [0000] | 1234 5678 9012 3456 |
| تاریخ | [00].[00].[0000] | 21.07.2026 |
| SNILS | [000]-[000]-[000] [00] | 123-456-789 00 |
| کوڈ | [0000] | 1234 |
Swift میں ماسک کا نفاذ InputMask لائبریری کا استعمال کرتے ہوئے UITextFieldDelegate سیٹ کرکے کیا جاتا ہے۔ لائبریری MaskedTextFieldDelegate کلاس فراہم کرتی ہے، جو ٹیکسٹ فیلڈ سے منسلک ہوتی ہے اور مخصوص کردہ ماسک کے مطابق خودکار طور پر ان پٹ فارمیٹ کرتی ہے۔
import InputMask
class PaymentViewController: UIViewController {
@IBOutlet var cardField: UITextField!
@IBOutlet var dateField: UITextField!
@IBOutlet var cvvField: UITextField!
var cardListener: MaskedTextFieldDelegate!
override func viewDidLoad() {
super.viewDidLoad()
cardListener = MaskedTextFieldDelegate()
cardListener.primaryMaskFormat = "[0000] [0000] [0000] [0000]"
cardField.delegate = cardListener
dateField.delegate = MaskedTextFieldDelegate(
primaryMaskFormat: "[00]/[00]"
)
cvvField.delegate = MaskedTextFieldDelegate(
primaryMaskFormat: "[000]"
)
}
}
خودکار ملک کی شناخت والے فون نمبروں کے لیے ترجیحی ماسک استعمال کریں۔ MaskedTextFieldDelegate ماسک کی ایک صف کی حمایت کرتا ہے: پہلا مماثل ماسک لاگو ہوتا ہے۔ اگر صارف +1 کوڈ درج کرتا ہے تو امریکی فارمیٹ لاگو ہوتا ہے، اگر +7 — روسی فارمیٹ۔
let phoneListener = MaskedTextFieldDelegate()
phoneListener.primaryMaskFormat = "+7 ([000]) [000]-[00]-[00]"
phoneListener.affinityMask = [
"+1 ([000]) [000]-[0000]",
"+44 [000] [000] [0000]",
"+49 [000] [0000] [0000]"
]
اختیاری بلاکس والی تاریخوں کے لیے گھنگریالے بریکٹ استعمال کریں۔ اگر صارف صرف دن درج کرتا ہے تو ماسک “21” ظاہر کرتا ہے۔ اگر دن اور مہینہ درج کرتا ہے — “21.07”۔ اگر تینوں اجزاء درج کرتا ہے — “21.07.2026”۔ اختیاری بلاکس ماسک کو موافق بناتے ہیں اور صارف کو وہ ڈیٹا درج کرنے پر مجبور نہیں کرتے جو وہ فراہم نہیں کرنا چاہتا۔
let dateListener = MaskedTextFieldDelegate(
primaryMaskFormat: "[00]{.}[00]{.}[0000]"
)
dateField.delegate = dateListener
درست پیسٹ کا انتظام ان پٹ ماسک کے نفاذ کے سب سے پیچیدہ پہلوؤں میں سے ایک ہے۔ ٹیکسٹ پیسٹ کرتے وقت (مثال کے طور پر، کلپ بورڈ سے کارڈ نمبر)، لائبریری کو پیسٹ کردہ ٹیکسٹ سے تمام جدا کار ہٹانے، صرف اہم حروف نکالنے اور صاف ڈیٹا پر ماسک لگانے کی ضرورت ہوتی ہے۔ RedMadRobot کا InputMask shouldChangeCharactersIn طریقہ کار کے ذریعے خودکار طور پر یہ کرتا ہے۔
فارمیٹ شدہ ٹیکسٹ (خالی جگہوں یا ڈیش کے ساتھ) پیسٹ کرتے وقت، لائبریری پہلے ڈیٹا کو نارمل کرتی ہے: ماسک پیٹرن سے مماثل نہ ہونے والے تمام حروف کو ہٹاتی ہے، پھر نارمل کردہ سٹرنگ پر ماسک لگاتی ہے۔ اگر پیسٹ کردہ ٹیکسٹ میں نااہل حروف ہوں (ہندسوں کے ماسک میں حروف)، تو انہیں نظر انداز کر دیا جاتا ہے۔
ماسک میں ڈیلیٹ (بیک اسپیس) کا انتظام خصوصی توجہ کی ضرورت ہے۔ بیک اسپیس دبانے پر، ماسک کو آخری اہم حرف حذف کرنا چاہیے، مستقل جدا کار کو نہیں۔ اگر کرسر کسی مستقل حرف کے بعد ہے تو بیک اسپیس کو اسے چھوڑ کر پچھلا اہم حرف حذف کر دینا چاہیے۔ InputMask اس رویے کو درج کردہ حروف کے اسٹیک کے ذریعے نافذ کرتا ہے۔
ٹیکسٹ سلیکشن اور ریپلیسمنٹ کے لیے، ماسک کو ان حالات کو صحیح طریقے سے سنبھالنا چاہیے جہاں صارف ٹیکسٹ کا کچھ حصہ منتخب کرتا ہے اور اسے نئے مواد سے بدل دیتا ہے۔ InputMask لائبریری MaskedTextFieldDelegate میں modifyString طریقہ کار کے ذریعے اس کی حمایت کرتی ہے، جو تبدیلی کی رینج اور نئی سٹرنگ قبول کرتا ہے۔
ماسک ڈیزائن اس بات کے تجزیہ سے شروع ہوتا ہے کہ صارف ڈیٹا کیسے درج کرے گا۔ اگر زیادہ تر صارفین فارمیٹ کو زبانی جانتے ہیں (فون نمبر)، تو ماسک کم سے کم ہونا چاہیے — صرف گروپوں کے درمیان جدا کار۔ اگر فارمیٹ ناواقف ہے (SNILS، INN)، تو ماسک زیادہ معلوماتی ہونا چاہیے، جس میں لاحقہ اور لیبل شامل ہوں۔
بڑی تعداد میں مستقل حروف والے ضرورت سے زیادہ ماسک سے پرہیز کریں۔ ماسک +7 ([000]) [000]-[00]-[00] میں 10 اہم حروف کے لیے 7 مستقل حروف ہیں — یہ قابل قبول ہے۔ لیکن ضرورت سے زیادہ جدا کاروں والا ماسک جسے صارف مسلسل نظرانداز کرتا ہے، فائدے سے زیادہ نقصان پہنچاتا ہے۔ اگر آپ فارمیٹ کے بارے میں یقین نہیں رکھتے — مفت ان پٹ استعمال کریں۔
بین الاقوامی ایپلیکیشنز کے لیے، ذہن میں رکھیں کہ ڈیٹا فارمیٹ مختلف ممالک میں مختلف ہو سکتے ہیں۔ امریکہ میں فون نمبر کا فارمیٹ +1 (XXX) XXX-XXXX ہے، جبکہ اٹلی میں — +39 XXX XXX XXXX۔ کوڈ کے ذریعے خودکار ملک کی شناخت والے ترجیحی ماسک استعمال کریں، یا صارف کو نمبر درج کرنے سے پہلے ملک منتخب کرنے دیں۔
InputMask UX جانچ کے مطابق، صارفین ان ماسک کو ترجیح دیتے ہیں جو ان پٹ شروع کرنے سے پہلے فارمیٹ دکھاتے ہیں (پلیس ہولڈر یا لاحقہ کے ذریعے) اور حرف کے ان پٹ کو مسدود نہیں کرتے۔ ماسک ایک اشارہ ہونا چاہیے، پابندی نہیں۔ اگر صارف ماسک سے مماثل نہ ہونے والا حرف درج کرتا ہے تو بغیر وضاحت کے ان پٹ مسدود کرنے سے بہتر ہے کہ اس کی اجازت دی جائے۔
اکثر پوچھے گئے سوالات
Input Mask ڈیٹا کو ریئل ٹائم میں فارمیٹ کرتا ہے، جبکہ تصدیق ان پٹ مکمل ہونے کے بعد درستگی چیک کرتی ہے۔ ماسک غلطیوں کو روکتا ہے، تصدیق انہیں دریافت کرتی ہے۔
ہاں، UITextView shouldChangeTextIn طریقہ کار کے ساتھ UITextViewDelegate کی حمایت کرتا ہے، جس کے ذریعے ماسک لگایا جا سکتا ہے۔ تاہم، InputMask لائبریری UITextField کے لیے بہتر بنائی گئی ہے۔
MaskedTextFieldDelegate میں affinityMask پراپرٹی استعمال کریں۔ لائبریری درج کردہ ملکی کوڈ کی بنیاد پر خودکار طور پر پہلا مماثل ماسک منتخب کرتی ہے۔
ہاں، مشترکہ ماسک معاون ہیں۔ حروف کے لیے A اور ہندسوں کے لیے 0 استعمال کریں۔ مثال کے طور پر، ABC-123 فارمیٹ کے لیے [AAA]-[000] ماسک۔
ہاں، Input Mask iOS آٹو فل کے ساتھ مطابقت رکھتا ہے۔ MaskedTextFieldDelegate shouldChangeCharactersIn کے ذریعے آٹو فل سے بلک ڈیٹا داخل کرنے کو صحیح طریقے سے ہینڈل کرتا ہے۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں