كيفية اخفاء الكيبرد في ios برمجياً

شرح طريقة اخفاء كيبرد في الايفون بعدة طرق

mohmmed saplelمنذ 3 سنوات

 

السلام عليكم ورحمة الله وبركاته  

اخواني بشرح عدة طرق كيفية اخفاء الكيبورد في swift5 برمجياً بسهولة 

لجعل تجربة المستخدم التطبيق فعالة بشكل جيد لعدم توفرها ابل بشكل افتراضي لذلك علينا معالجها  المشاكل يدويًا في السابق يتم ذلك عبر func حالياً لا تعامل بشكل صحيح وافضل عملها داخل ملف swift عبرextension 

نفتح xcode مشروع جديد : 

نضيف text.field الي Main.storyboard 

بعد اضافة  text.field الي Main.storyboard لا يختفي الكيبورد ممكن ذلك ان  تسبب تجربه سيئة للمستخدمين : 

عندما تنقر على حقل نص ، تظهر  لوحة المفاتيح وتسمح لك بكتابة ما تريد. لكن بمجرد الانتهاء من الكتابة ، لا يوجد زر افتراضي يقوم بإغلاق لوحة المفاتيح ، والنقر خارج لوحة المفاتيح لن يفعل أي شيء 

 

الكثير في السابق يستخدم داخل super.viewDidLoad بعد تجربتها لا تعمل في الاصدارات الجديدة


  override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        self.view.endEditing(true)
    }

الطريقة الاولي :

ذه هي أسرع طريقة لتنفيذ اخفي  لوحة المفاتيح. ما عليك سوى تعيين إيماءة النقر على العرض الرئيسي ويختفي 

كل  ما عليك سوى النقر بالخارج في أي مكان على الشاشة وسيتم تجاهل لوحة المفاتيح بسهولة

اضف ملف سويفت  واعطية اي اسم حسب الرغبة

اضف الكود التالي داخل ملف swift

import UIKit

extension ViewController {

func initializeHideKeyboard(){
    
    
let tap: UITapGestureRecognizer = UITapGestureRecognizer(
target: self,
action: #selector(dismissMyKeyboard))

//Add this tap gesture recognizer to the parent view
view.addGestureRecognizer(tap)
}

@objc func dismissMyKeyboard(){
//endEditing causes the view (or one of its embedded text fields) to resign the first responder status.
//In short- Dismiss the active keyboard.
view.endEditing(true)
}

}

بعد نضيف الكود الي super.viewDidLoad  مثل صورة مرفقة

super.viewDidLoad

نتيجة:)

 

الطريقة الثانية عبر مفتاح إرجاع لوحة المفاتيح 

الطريقة الافضل في كتابة بيانات او الشات كا تجربة مستخدم

اولاً نضيف عنصرين text.field  الي Main.storyboard

مثل صورة مرفقة

    @IBOutlet weak var email: UITextField!
    @IBOutlet weak var password: UITextField!

الخطوة الثانية انشاء ملف swift. نفس خطوات سابقة ولصق الكود بداخلة

extension ViewController: UITextFieldDelegate {

func textFieldShouldReturn(_ textField: UITextField) -> Bool {
//Check if there is any other text-field in the view whose tag is +1 greater than the current text-field on which the return key was pressed. If yes → then move the cursor to that next text-field. If No → Dismiss the keyboard
if let nextField = self.view.viewWithTag(textField.tag + 1) as? UITextField {
nextField.becomeFirstResponder()
} else {
textField.resignFirstResponder()
}
return false
}
}

بالإمكان تغيره اذا كان هناك عناصر اكثر بعدها في ملف ViewController 

viewDidLoad نلصق الكود مع تغيرها بسماء العناصر في مشروعنا 

 email.delegate = self
        password.delegate = self

        email.tag = 1
        password.tag = 2

نتيجة   :)

في الاخير لاحظنا  افضل حل لمشكلة فصل لوحة المفاتيح ومعالجة TextField باستخدام لوحة المفاتيح  لا توجد طريقة جيدة أو طريقة سيئة عندما يتعلق الأمر بحل مشكلة فنية وتجربة مستخدم . هو أكثر أهمية بنسبة لك

 ما الذي يناسبك؟ ما الذي يصلح للمشروع؟ انت من يحدد  ما الذي يناسب فريقك؟ قد تكون هناك أوقات قد تحتاج فيها إلى استخدام مزيج من التقنيات المذكورة أعلاه او تقنيات اخرى أو في بعض الأحيان يمكن اتباع نمط واحد يناسب مبرمج ! في النهاية ، ما يهم هو أنك قمت بحل المشكلة 

هذا كل شيء من هذه مشاركة  ، شاركنا  إذا كان لديك جميعًا أي أفكار وأساليب أخرى لحل هذه المشكلة بالذات 

مصدر مهم

!ملاحظات مهمة : " 

لنقول إنك لا تريد معالجة أي من المشكلات المذكورة أعلاه يدويًا. قد تكون هناك بعض أسباب مختلفة لذلك هناك إمكانية. لا بأس بها ، أحيانًا يكون الوقت جوهريًا في مشروعنا . هناك العديد من المكتبات الموجودة التي تحل مشكلة إزالة لوحة المفاتيح و TextField  حتى تتمكن من قراءة قراءتي وتجد بنفسك أيهما يناسب احتياجاتك والشي الثاني انها تعطينا زر "تم" داخل لوحة المفاتيح  بدون اضافتة يدوياً من خلال الكود في Toolbar for Number Pad  . " 

المكتبة الاولي

المكتبة الثانية

محمد صالح

 

1
إعجاب
1418
مشاهدات
0
مشاركة
1
متابع

التعليقات (0)

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !