Shake-to-undo العمل على تطبيق Coredata ، ولكن لا توجد مطالبات تراجع/إعادة عرض

StackOverflow https://stackoverflow.com/questions/4223344

سؤال

لديّ تطبيق قائم على 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 في Setter managedObjectModel. مرة أخرى ، لقد تحقق من أن هذا يتم استدعاؤه. إذا لم أفعل ذلك ، فلا يعمل التراجع على الإطلاق.

استكشاف الأخطاء وإصلاحها لقد جربت بالفعل:

  • إن التحقق من التراجع في الواقع يعمل (أرى تغييرات على إدارتي managedObjectModel)
  • التحقق canBecomeFirstResponder يتم استدعاؤه
  • التحقق مما إذا كان الملحق self.undoManager يتم استدعاؤه أثناء عملية التراجع (وهو ليس كذلك).

لذلك أسئلتي هي:

  • تحت أي ظرف من الظروف تعمل على العمل ولكن لا تظهر مطالبات التراجع؟
  • ماذا ستحاول بجانب استكشاف الأخطاء وإصلاحها؟
هل كانت مفيدة؟

المحلول

لقد تتبعت هذا في النهاية إلى بعض الكود القديم الذي كان يدويًا يدويًا حركة الهز والاتصال بالتراجع عن المراوغة ؛ تنفيذ Motioned: في وحدة التحكم في العرض. بمجرد إزالة هذا ، بدأت في التراجع عن مطالبات مرة أخرى.

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