البرمجة

كيفية اكتشاف نقرات الأزرار في WKWebView

عندما تقوم بتحميل صفحة ويب في WKWebView وترغب في اكتشاف عندما يقوم المستخدم بالنقر على زر معين، يمكنك استخدام معالج الرسائل الجافا سكريبت (JavaScript) لتنفيذ ذلك. على الرغم من أن decidePolicyForNavigationAction لا يتم تشغيله لأن النقرة ليست عملية تنقل، إلا أنه يمكنك تضمين رمز جافا سكريبت يتصل بمعالج الرسائل الجافا سكريبت الخاص بك.

لتحقيق ذلك، يمكنك إضافة معالج رسائل جافا سكريبت لوحدة التحكم في محتوى المستخدم (user content controller) لـ WKWebView الخاص بك. بالنظر إلى أنك لا تمتلك صفحة الويب، يمكنك استخدام جافا سكريبت لتفعيل إرسال رسالة بعد النقر على الزر، ثم يمكن لمعالج الرسائل في تطبيقك التقاط هذه الرسالة.

في هذا السياق، يمكنك استخدام الشيفرة التالية في الجافا سكريبت لإرسال رسالة عبر window.webkit.messageHandlers عند النقر على الزر:

javascript
document.querySelector('.deploy-button').addEventListener('click', function() { window.webkit.messageHandlers.buttonClicked.postMessage('messageToPost'); });

بمجرد تضمين هذا الكود في صفحة الويب المحملة في WKWebView، سيتم إرسال رسالة 'messageToPost' عبر معالج الرسائل الجافا سكريبت الخاص بتطبيقك عند النقر على الزر المعين.

ثم، في تطبيقك بلغة Swift (أو Objective-C)، يمكنك تحديد معالج الرسائل للتقاط هذه الرسالة واتخاذ الإجراءات المناسبة، مثل هذا:

swift
webView.configuration.userContentController.add(self, name: "buttonClicked") extension YourViewController: WKScriptMessageHandler { func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) { if message.name == "buttonClicked", let messageBody = message.body as? String { // Perform actions upon receiving the message print("Button clicked: \(messageBody)") } } }

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

المزيد من المعلومات

بالطبع، دعني أوسع على الموضوع.

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

مثلاً، يمكنك تحديد عملية معينة عندما يتم النقر على الزر. قد ترغب في تنفيذ دالة تقوم بإرسال بيانات معينة إلى الخادم أو تنفيذ إجراء معين داخل التطبيق.

لنفترض أنك تريد تغيير لون خلفية التطبيق عندما يتم النقر على الزر. يمكنك القيام بذلك على سبيل المثال كما يلي:

swift
extension YourViewController: WKScriptMessageHandler { func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) { if message.name == "buttonClicked", let messageBody = message.body as? String { // Change background color upon receiving the message self.view.backgroundColor = UIColor.blue } } }

هنا، عندما يتم النقر على الزر، ستقوم دالة didReceive بتغيير لون خلفية التطبيق إلى الأزرق. يمكنك بالطبع تغيير هذا السلوك ليتناسب مع متطلبات تطبيقك.

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

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر