Shake-to-undo العمل على تطبيق Coredata ، ولكن لا توجد مطالبات تراجع/إعادة عرض
-
26-09-2019 - |
سؤال
لديّ تطبيق قائم على Coredata يدعم Shake-to-undo. هذا يعمل بشكل جيد حاليًا ، ولكن عندما هزت الجهاز ، يحدث التراجع على الفور ، دون أن يظهر أولاً موجه التراجع المعتاد الذي ينص عليه Nsundomanager مجانًا.
لقد قرأت "استخدام التراجع على iPhone" من وثيقة "التراجع عن الهندسة المعمارية" وأنا:
- تنفيذ
canBecomeFirstResponder
, ، عودةYES
- جعل وحدة التحكم في العرض
becomeFirstResponder
فيviewDidAppear
- جعل وحدة التحكم في العرض
resignFirstResponder
فيviewDidDisappear
- Redeclaring
self.undoManager
في وحدة التحكم في العرض كقراءة/كتابة - إنشاء
NSUndoManager
والإعدادself.undoManager
في الUIViewController
init
الطريقة (التي قمت بالتحقق منها يتم استدعاؤها). - إعداد
self.managedObjectModel.managedObjectContext.undoManager
لself.undoManager
في SettermanagedObjectModel
. مرة أخرى ، لقد تحقق من أن هذا يتم استدعاؤه. إذا لم أفعل ذلك ، فلا يعمل التراجع على الإطلاق.
استكشاف الأخطاء وإصلاحها لقد جربت بالفعل:
- إن التحقق من التراجع في الواقع يعمل (أرى تغييرات على إدارتي managedObjectModel)
- التحقق
canBecomeFirstResponder
يتم استدعاؤه - التحقق مما إذا كان الملحق
self.undoManager
يتم استدعاؤه أثناء عملية التراجع (وهو ليس كذلك).
لذلك أسئلتي هي:
- تحت أي ظرف من الظروف تعمل على العمل ولكن لا تظهر مطالبات التراجع؟
- ماذا ستحاول بجانب استكشاف الأخطاء وإصلاحها؟
المحلول
لقد تتبعت هذا في النهاية إلى بعض الكود القديم الذي كان يدويًا يدويًا حركة الهز والاتصال بالتراجع عن المراوغة ؛ تنفيذ Motioned: في وحدة التحكم في العرض. بمجرد إزالة هذا ، بدأت في التراجع عن مطالبات مرة أخرى.
لا تنتمي إلى StackOverflow