قم بإلغاء أحداث UITouch عند عرض العرض بواسطة Modal UiviewController

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

سؤال

أكتب تطبيقًا حيث يتعين على المستخدم نقل بعض الأشياء على الشاشة باستخدام أصابعه وإسقاطها. للقيام بذلك ، أنا أستخدم touchesbegan ، touchesed ... وظيفة كل عرض يجب نقله.

المشكلة هي أنه في بعض الأحيان يتم تغطية طرق العرض بواسطة طريقة عرض معروضة باستخدام وظيفة [uiviewController presentModalViewController]. بمجرد حدوث ذلك ، تتوقف Uiview التي كنت أتحرك فيها عن تلقي أحداث اللمس ، حيث تم تغطيتها. ولكن لا يوجد حدث يخبرني أنه توقف عن تلقي الأحداث ، حتى أتمكن من إعادة ضبط حالة العرض المنقولة.

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

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
  NSLog(@"touchesBegan");

  touchStart=[[touches anyObject] locationInView:self];
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
  CGPoint touchAt=[[touches anyObject] locationInView:self];
  float xx=(touchAt.x-touchStart.x)*(touchAt.x-touchStart.x);
  float yy=(touchAt.y-touchStart.y)*(touchAt.y-touchStart.y);
  float rr=xx+yy;

  NSLog(@"touchesMoved %f",rr);
  if(rr > 100) {
    NSLog(@"Show modal");
    [viewController presentModalViewController:[UIViewController new] animated:NO];
  }
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
  NSLog(@"touchesEnded");
}

- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event {
  NSLog(@"touchesCancelled");
}

ولكن عندما أقوم باختبار التطبيق وأعرض مربع الحوار الوسيط المراد عرضه ، فإن ما يلي هو الإخراج في سجل التشغيل.

بدأت الجلسة في 2010-03-27 16:17:14 -0700.] 2010-03-27 16: 17: 18.831 ModelTouchCancel [2594: 207] Touchesbegan 2010-03-27 16: 17: 19.485 ModelTouchCancel [2594: 207 ] Touchesmoved 2.000000 2010-03-27 16: 17: 19.504 ModelTouchCancel [2594: 207] Touchesmoved 4.000000 2010-03-27 16: 17: 19.523 ModelTouchCancel [2594: 207] [2594: 207] Touchesmoved 26.000000 2010-03-27 16: 17: 19.596 ModelTouchCancel [2594: 207] Touchesmoved 68.000000 2010-03-27 16: 17: 19.624 ModelTouchCancel [2594: 207] 17: 19.640 ModelTouchCancel [2594: 207] Touchesmoved 125.000000 2010-03-27 16: 17: 19.641 ModelTouchCancel [2594: 207] عرض Modal

أي اقتراحات حول كيفية إعادة تعيين حالة UIVIEW عندما يتم مقاطعة أحداث اللمس من خلال عرض مشروط؟

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

المحلول

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

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