سؤال

كل الأمثلة يمكنني العثور عليها من إعداد إشعار تبدو وكأنها هذه:

NC addobserver: محدد النفس: @ المشتبه (KeyboardWillshow :) الاسم: Uikeyboardwillshownotification كائن: NIL]؛

حيث يتم تعيين الكائن دائما إلى nil. الكائن هو إخفاء الحساب، والذي يتم تعريفه الحالي في الوثائق:

"الكائن الذي يريد المراقب أن يستقبله؛ وهذا هو، يتم تسليم الإشعارات الوحيدة التي أرسلها هذا المرسل إلى المراقب. عندما لا يستخدم NIL، فإن مركز الإعلام لا يستخدم مرسل الإخطار لتحديد ما إذا كنت تريد تسليمه إلى المراقب".

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

أي اقتراحات؟

هل كانت مفيدة؟

المحلول

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

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

نصائح أخرى

في هذه الحالة، لا يمكنك الحصول على الإشعار فقط للحصول على عرض نص معين واحد، حيث يقول Docu for Uikeyboardwillshownotification "كائن الإخطار هو NIL.".

يجب عليك التحقق من لوحة المفاتيح الخاصة بك باستخدام ISFirstrstrstresponder.

كان لدي اثنين من الاحتياجات المتنافسة - اضطررت إلى استخدام إشعار لوحة المفاتيح لأنني كنت بحاجة إلى الحصول على ارتفاع لوحة المفاتيح، والذي يبدو أنه متاح فقط بهذه الطريقة، ولكنني احتاج أيضا إلى معرفة عرض النص الذي كنت فيه، مما يعني أيضا استخدام TextViewDidBegediting مندوب. بعد الكثير من العبثات بجمعت أخيرا للحصول على ارتفاع لوحة المفاتيح في طريقة الإعلام وتخزينه في متغير مثيل، والذي كان متاحا بعد ذلك لاستخدامه في طريقة المفوض (أحتاج إلى التمرير لعرض الرأي حتى لا يكون عرض النص السفلي في الغالب مخفية تحت لوحة المفاتيح عند بدء الكتابة). inelegant قليلا، لكنها تعمل.

شكرا على المؤشرات!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top