سؤال

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

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

المحلول

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

   UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(scrollViewSwipedLeft:)];
   [swipeLeft setDirection:UISwipeGestureRecognizerDirectionLeft];
   [self.navigationController.navigationBar addGestureRecognizer:swipeLeft];

وثم إنشاء أسلوب مثل واحد أدناه للتعامل معها:

-(void) didSwipedLeft: (UISwipeGestureRecognizer *) gesture {

  if (gesture.state != UIGestureRecognizerStateEnded) {
      return;
  }

  //do something    
}

وOBS: وأنت تحكم الملاحة هي فئة التي ستبقى على قيد الحياة لعدة خطوات منكم دورة حياة التطبيق، فإنه من المهم أن تولي اهتماما لذلك، وإضافة التعرف على لفتة فقط عند إنشاء وحدة تحكم الملاحة (وهو ما يعني إضافة فقط مرة واحدة) بحيث لا تبقي تتراكم فتات التعرف على واحدة فوق بعضها البعض، واللي تبونه يؤدي ليس فقط إلى حدوث تسرب للذاكرة، ولكن أيضا قد تجعل طريقة didSwipedLeft الخاص بك ليتم استدعاؤها أكثر من مرة واحدة.

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