Keyboard Avoidance — جوہر، نفاذ کے طریقے اور انٹرفیس آفسیٹ

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

Keyboard Avoidance iOS ایپلیکیشن کے انٹرفیس کو سسٹم کی بورڈ کے ظاہر ہونے پر ڈھالنے کی ایک تکنیک ہے، جو ٹیکسٹ فیلڈز اور دیگر انٹرایکٹو عناصر کو ڈھانپ سکتا ہے۔ اس میکانزم کے نفاذ کے بغیر، صارف جسمانی طور پر نہیں دیکھ سکتا کہ وہ کیا ٹائپ کر رہا ہے، جس سے غلطیاں ہوتی ہیں اور صارف کے تجربے میں بگاڑ آتا ہے۔ Apple Developer Documentation (2026) کے مطابق، iOS 15 سے شروع کرتے ہوئے مواد کی خودکار منتقلی کے انتظام کے لیے UIScrollView کو UIScrollView.keyboardLayoutGuide کے ساتھ استعمال کرنے کی سفارش کی جاتی ہے۔

اہم نکات

  • Keyboard Avoidance — کی بورڈ ظاہر ہونے پر مواد کو اوپر منتقل کرنا تاکہ فعال ٹیکسٹ فیلڈ نظر آتا رہے۔
  • UIKeyboardWillShowNotification اور UIKeyboardWillHideNotification لے آؤٹ کو ڈھالنے کے لیے کی بورڈ کا سائز اور اینیمیشن فراہم کرتے ہیں۔
  • UIScrollView.keyboardLayoutGuide (iOS 15+) کی بورڈ ظاہر اور پوشیدہ ہونے پر خودکار طور پر مارجن کا انتظام کرتا ہے۔
  • IQKeyboardManager دستی کوڈ کے بغیر خودکار Keyboard Avoidance کے لیے ایک مشہور تھرڈ پارٹی لائبریری ہے۔
  • UITextFieldDelegate درست منتقلی کے انتظام کے لیے ترمیم کے شروع اور اختتام کو ٹریک کرنے کی اجازت دیتا ہے۔

Keyboard Avoidance کیا ہے

Keyboard Avoidance تکنیکوں کا ایک مجموعہ ہے جو iOS پر سسٹم کی بورڈ کے ظاہر ہونے پر فعال انپٹ فیلڈ کی نمائش کو یقینی بناتا ہے۔ بنیادی مسئلہ: کی بورڈ اسکرین کا 50% تک حصہ لے لیتا ہے اور انٹرفیس کے نچلے نصف حصے کو ڈھانپ لیتا ہے، جس میں ٹیکسٹ فیلڈز، جمع کرانے کے بٹن اور دیگر عناصر شامل ہیں۔

نفاذ کے تین اہم طریقے ہیں: Keyboard Notifications کے ذریعے دستی انتظام (کلاسک طریقہ، iOS 3.0 سے کام کرتا ہے)، خودکار اسکرولنگ کے ساتھ UIScrollView کا استعمال (Apple کی تجویز کردہ)، اور Keyboard Layout Guide (iOS 15+ کے ساتھ جدید طریقہ)۔ انتخاب کم سے کم تعاون یافتہ iOS ورژن اور انٹرفیس کی پیچیدگی پر منحصر ہے۔

Apple کے مطابق، Keyboard Avoidance کی کمی جائزہ کے دوران ایپلیکیشن مسترد ہونے کی سب سے عام وجوہات میں سے ایک ہے اگر ٹیکسٹ فیلڈز کی بورڈ سے مکمل طور پر ڈھکے ہوئے ہوں۔ App Store Guidelines واضح طور پر تقاضا کرتی ہیں کہ تمام انٹرایکٹو عناصر فعال انپٹ کے دوران قابل رسائی رہیں۔

iOS یہ خودکار کیوں نہیں کرتا

iOS خودکار طور پر یہ تعین نہیں کر سکتا کہ کون سا عنصر نظر آتا رہنا چاہیے کیونکہ یہ انٹرفیس کی معنویات نہیں جانتا۔ ایک ٹیکسٹ فیلڈ والے سادہ فارم میں، پوری اسکرین کو اوپر منتقل کرنا کافی ہے۔ کسٹم پینلز، فلوٹنگ بٹنز اور متعدد حصوں والے پیچیدہ انٹرفیس میں، مختلف رویے کی منطق کی ضرورت ہوتی ہے۔

مزید برآں، کچھ ایپلیکیشنز جان بوجھ کر مواد کو منتقل نہیں کرتیں — مثال کے طور پر، کی بورڈ کیلکولیٹر یا ایڈیٹرز جہاں کی بورڈ کام کی جگہ کا حصہ ہے۔ iOS فیصلہ ڈویلپر پر چھوڑتا ہے، کسی بھی منظر نامے کے لیے لچکدار APIs فراہم کرتا ہے۔

کی بورڈ فریم نوٹیفیکیشنز

UIKeyboardWillShowNotification اہم نوٹیفیکیشن ہے جو iOS کی بورڈ ظاہر ہونے سے پہلے بھیجتا ہے۔ اس میں UIResponder.keyboardFrameEndUserInfoKey ڈکشنری میں کی بورڈ کی آخری پوزیشن کے ساتھ CGRect ہوتا ہے، نیز UIResponder.keyboardAnimationDurationUserInfoKey میں اینیمیشن کی مدت ہوتی ہے۔

نوٹیفیکیشن ہینڈلر کو فعال ٹیکسٹ فیلڈ اور کی بورڈ کے درمیان اوورلیپ کا حساب لگانا چاہیے، پھر کنٹینر کے نچلے مارجن (contentInset یا frame) کو تبدیل کرنا چاہیے۔ اگر فیلڈ کی بورڈ کے اوپری کنارے سے نیچے ہے تو مواد اوورلیپ کی مقدار سے اوپر منتقل ہو جاتا ہے۔ کی بورڈ پوشیدہ ہونے پر، مارجن اپنی اصل قدر پر واپس آ جاتا ہے۔

swift
@objc func keyboardWillShow(_ notification: Notification) {
    guard let keyboardFrame = notification
        .userInfo?[UIResponder.keyboardFrameEndUserInfoKey]
        as? CGRect else { return }
    
    let keyboardHeight = keyboardFrame.height
    scrollView.contentInset.bottom = keyboardHeight
    scrollView.verticalScrollIndicatorInsets.bottom = keyboardHeight
}

نوٹیفیکیشنز استعمال کرتے وقت، اینیمیشن کو سسٹم کی بورڈ کے ساتھ ہم آہنگ کرنا ضروری ہے۔ iOS اینیمیشن وکر (UIResponder.keyboardAnimationCurveUserInfoKey) اور مدت فراہم کرتا ہے۔ ان پیرامیٹرز کے ساتھ UIView.animate استعمال کریں تاکہ مواد کی بورڈ کے ظاہر ہونے کے ساتھ ہی آسانی سے منتقل ہو۔

iOS 15+ میں Keyboard Layout Guide

UIScrollView.keyboardLayoutGuide Keyboard Avoidance کے لیے ایک جدید API ہے، جو iOS 15 میں متعارف کرایا گیا۔ یہ خود بخود کی بورڈ کی پوزیشن کو ٹریک کرتا ہے اور Auto Layout کی پابندیوں کو اپ ڈیٹ کرتا ہے جو انٹرفیس کے نچلے حصے کو کی بورڈ کے اوپری کنارے سے جوڑتی ہیں۔

اسے استعمال کرنے کے لیے، UIScrollView یا UIStackView پر layout guide کو فعال کریں اور نچلی مواد کی پابندی اس سے منسلک کریں۔ نوٹیفیکیشنز، اونچائی کے حساب یا اینیمیشن کے ساتھ کسی دستی کام کی ضرورت نہیں — سسٹم خود بخود سب کچھ کرتا ہے، اینیمیشن کو کی بورڈ کے ظاہر اور پوشیدہ ہونے کے ساتھ ہم آہنگ کرتا ہے۔

swift
// Keyboard Layout Guide کو فعال کریں (iOS 15+)
scrollView.keyboardLayoutGuide.followsUndockedKeyboard = true

// نیچے کی پابندی کو کی بورڈ کے اوپر سے لگائیں
contentView.bottomAnchor.constraint(
    equalTo: scrollView.keyboardLayoutGuide.topAnchor
).isActive = true

followsUndockedKeyboard ایک خاصیت ہے جو تعین کرتی ہے کہ گائیڈ کو کی بورڈ پر ردعمل ظاہر کرنا چاہیے جو نچلے کنارے سے الگ ہو سکتا ہے (iPad پر)۔ اسے صرف true پر سیٹ کریں اگر انٹرفیس فلوٹنگ کی بورڈ کے ساتھ صحیح طریقے سے کام کرتا ہے۔ iPhone کے لیے، یہ خاصیت نظر انداز کی جاتی ہے — کی بورڈ ہمیشہ نچلے کنارے سے منسلک ہوتا ہے۔

UIScrollView اور کی بورڈ

UIScrollView ایک کنٹینر ہے جسے Apple Keyboard Avoidance کی بنیاد کے طور پر استعمال کرنے کی سفارش کرتا ہے۔ جب کی بورڈ ظاہر ہوتا ہے، scroll view اپنا contentInset.bottom بڑھاتا ہے، جس سے مواد اوپر اسکرول ہو سکتا ہے اور فعال فیلڈ نظر آ سکتی ہے۔

کلیدی طریقہ scrollRectToVisible ہے، جو پروگرامی طور پر scroll view کو اسکرول کرتا ہے تاکہ مخصوص مستطیل (فعال ٹیکسٹ فیلڈ) نظر آنے والے علاقے میں آ جائے۔ contentInset تبدیلی کو scrollRectToVisible کال کے ساتھ جوڑنا یقینی بناتا ہے کہ فیلڈ نہ صرف کھلا ہے بلکہ نظر آنے والے علاقے کے اوپری حصے میں بھی واقع ہے۔

swift
func adjustScrollForKeyboard(
    keyboardHeight: CGFloat,
    activeField: UIView
) {
    scrollView.contentInset.bottom = keyboardHeight
    scrollView.verticalScrollIndicatorInsets.bottom = keyboardHeight
    
    var visibleRect = view.frame
    visibleRect.size.height -= keyboardHeight
    
    if activeField.frame.origin.y > visibleRect.maxY {
        scrollView.scrollRectToVisible(
            activeField.frame, animated: true
        )
    }
}

UITableView کے ساتھ UIViewController کے لیے، Apple UITableViewController استعمال کرنے کی سفارش کرتا ہے، جو کی بورڈ ظاہر ہونے پر خود بخود contentInset کو ایڈجسٹ کرتا ہے۔ اگر آپ شامل کردہ جدول کے ساتھ UIViewController استعمال کرتے ہیں، تو آپ کو دستی طور پر Keyboard Avoidance لاگو کرنا ہوگا — UITableViewController حسب ضرورت کنٹرولرز کے لیے یہ رویہ فراہم نہیں کرتا۔

Auto Layout اور Keyboard Avoidance

Auto Layout اینیمیشن پروگرام کیے بغیر Keyboard Avoidance لاگو کرنے کی اجازت دیتا ہے — کسی خاص پابندی کی سرگرمی (isActive) تبدیل کریں یا کی بورڈ نوٹیفیکیشن کے جواب میں اس کا مستقل اپ ڈیٹ کریں۔

ایک عام منصوبہ: scroll view یا مواد کے نچلے مارجن کے لیے IBOutlet NSLayoutConstraint بنائیں، اور keyboardWillShow ہینڈلر میں constraint.constant = keyboardHeight سیٹ کریں، اور keyboardWillHide میں اسے 0 پر ری سیٹ کریں۔ ہموار منتقلی کے لیے animate بلاک کے اندر layoutIfNeeded کے ذریعے لے آؤٹ اپ ڈیٹ کریں۔

طریقہiOS ورژنپیچیدگیسفارش
Keyboard NotificationsiOS 3.0+درمیانیپرانے ورژنز کی حمایت کے لیے
UIScrollView + contentInsetiOS 2.0+کمعالمگیر طریقہ، Apple تجویز کرتا ہے
Keyboard Layout GuideiOS 15+کم سے کمجدید طریقہ (iOS 15+)
IQKeyboardManageriOS 8.0+صفرفوری حل، مقبول لائبریری

UIStackView استعمال کرتے وقت، نچلے مارجن کی پابندیوں کو تبدیل کرنا بھی کام کرتا ہے: اسٹیک ویو خود بخود چائلڈ عناصر کو دوبارہ تقسیم کرتا ہے۔ تاہم، اگر اسٹیک ویو UIScrollView کے اندر ہے، تو اس کے اندر کی پابندیوں کے بجائے خود scroll view کے contentInset کا انتظام کرنا بہتر ہے۔

Keyboard Avoidance کے لیے تھرڈ پارٹی حل

IQKeyboardManager سب سے مقبول لائبریری ہے (GitHub پر 16,000 سے زیادہ ستارے) جو کنٹرولر میں کوڈ کی ایک لائن کے بغیر خودکار Keyboard Avoidance لاگو کرتی ہے۔ یہ ٹیکسٹ فیلڈز کو ٹریک کرنے کے لیے method swizzling استعمال کرتی ہے اور کی بورڈ ظاہر ہونے پر خود بخود مواد کو اوپر اٹھاتی ہے۔

لائبریری لچکدار ترتیبات فراہم کرتی ہے: آپ فیلڈ اور کی بورڈ کے درمیان فاصلہ بتا سکتے ہیں، مخصوص کنٹرولرز کے لیے فعال/غیر فعال کر سکتے ہیں، اور UITextView اور کسٹم انپٹ ویوز کے لیے رویہ ترتیب دے سکتے ہیں۔ تاہم، method swizzling دوسری لائبریریوں سے متصادم ہو سکتا ہے، اور Apple غیر متوقع ضمنی اثرات کی وجہ سے پروڈکشن کوڈ کے لیے اس طریقے کی سفارش نہیں کرتا۔

متبادلات میں TPKeyboardAvoiding (ایک ہلکی لائبریری، ~2,000 ستارے) اور کمیونٹی کا KeyboardManager شامل ہیں۔ جدید منصوبوں کے لیے، Apple iOS 15+ کے بلٹ ان ٹولز استعمال کرنے کی سفارش کرتا ہے، اور کم سے کم ورژن والے منصوبوں کے لیے — contentInset کے ساتھ UIScrollView، جو سب سے قابل اعتماد بلٹ ان حل ہے۔

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

iOS میں Keyboard Avoidance کیا ہے؟

Keyboard Avoidance کی بورڈ ظاہر ہونے پر انٹرفیس کو منتقل کرنے کی ایک تکنیک ہے تاکہ فعال ٹیکسٹ فیلڈ نظر آتا رہے۔ یہ خودکار لے آؤٹ موافقت کے لیے UIScrollView، Keyboard Notifications یا iOS 15+ کے Keyboard Layout Guide کے ذریعے لاگو کیا جاتا ہے۔

UIScrollView کے بغیر Keyboard Avoidance کیسے لاگو کریں؟

آپ کی بورڈ ظاہر ہونے پر مرکزی ویو کے frame کو تبدیل کر سکتے ہیں، اس کی اونچائی کی بورڈ کی اونچائی سے کم کر کے۔ نوٹیفیکیشن کے userInfo سے پیرامیٹرز کے ساتھ اینیمیشن بلاک میں frame کو اپ ڈیٹ کرنے کے لیے UIKeyboardWillShowNotification اور UIKeyboardWillHideNotification استعمال کریں۔

keyboardLayoutGuide کیسے کام کرتا ہے؟

keyboardLayoutGuide ایک UILayoutGuide ہے جو UIScrollView (iOS 15+) میں شامل کیا جاتا ہے۔ یہ خود بخود کی بورڈ کے اوپری کنارے کو ٹریک کرتا ہے اور کی بورڈ ظاہر اور پوشیدہ ہونے پر اپنی NSLayoutConstraint کو اپ ڈیٹ کرتا ہے، اینیمیشن کو سسٹم کی بورڈ کے ساتھ ہم آہنگ کرتا ہے۔

Keyboard Avoidance کے لیے کون سی تھرڈ پارٹی لائبریریاں دستیاب ہیں؟

IQKeyboardManager سب سے مقبول ہے، کوڈ کی ضرورت نہیں۔ TPKeyboardAvoiding ایک ہلکا متبادل ہے۔ نئے منصوبوں کے لیے، iOS 15+ کے بلٹ ان ٹولز ترجیح دی جاتی ہیں کیونکہ تھرڈ پارٹی لائبریریاں method swizzling استعمال کرتی ہیں، جس کی Apple سفارش نہیں کرتا۔

کسی مخصوص اسکرین کے لیے Keyboard Avoidance کیسے غیر فعال کریں؟

اگر آپ IQKeyboardManager استعمال کر رہے ہیں، تو مخصوص UIViewController کے لیے enabled = false کال کریں۔ دستی نفاذ کے لیے، صرف اس اسکرین پر کی بورڈ نوٹیفیکیشنز کو سبسکرائب نہ کریں یا کی بورڈ ظاہر ہونے پر contentInset کو صفر پر ری سیٹ کریں۔

خلاصہ

  • Keyboard Avoidance — ٹیکسٹ انپٹ والی iOS ایپلیکیشنز کے لیے ایک ضروری تکنیک، فیلڈز کو کی بورڈ سے ڈھکے جانے سے روکتی ہے۔
  • UIKeyboardWillShowNotification اور UIKeyboardWillHideNotification — مواد کی منتقلی کے دستی انتظام کے لیے کلاسک API۔
  • UIScrollView contentInset اور scrollRectToVisible کے ساتھ — ایک عالمگیر حل جسے Apple تجویز کرتا ہے۔
  • Keyboard Layout Guide (iOS 15+) — دستی نوٹیفیکیشنز کے بغیر جدید طریقہ، Auto Layout استعمال کرتا ہے۔
  • Auto Layout پابندیاں اینیمیشن بلاک میں مستقل اپ ڈیٹ کے ساتھ ہموار مواد کی منتقلی کو یقینی بناتی ہیں۔
  • IQKeyboardManager — فوری نفاذ کے لیے مقبول تھرڈ پارٹی لائبریری، لیکن method swizzling کی حدود کے ساتھ۔
  • Apple تجویز کرتا ہے iOS 15+ والے منصوبوں کے لیے keyboardLayoutGuide کے ساتھ UIScrollView اور پرانے ورژن والے منصوبوں کے لیے contentInset۔

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

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

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

مزید پڑھیں