English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

تقييد طول المدخل في TextField باستخدام بضع سطور من iOS

هناك العديد من الطرق المحددة لقيود طول إدخال textField على الإنترنت، ولكن أعتقد أن جميعها ليست مثالية، يمكن القول إنها غير متوافقة مع متطلبات تطوير الواقع، لذا قمت بجمعها هنا.

 الطريقة التي أستخدمها ليست طريقة الاستماع بل طريقة تنفيذ الوكيل المختلفة، لماذا لا أستخدم الاستماع؟؟؟
 من المحتمل أن تشعر بالقلق بشأن شيء ما عندما ترى هذا المقال وهو استخدام المراقبة لتقييد طول الإدخال دون التحكم بشكل مثالي في محتوى الإدخال.

 لنأخذ مثالًا بسيطًا: 

إذا كنت تريد تقييد طول الإدخال إلى 30 حرفًا، عند الوصول إلى 30 حرفًا يمكن للمراقبة أن تتحكم بشكل جيد في عدم السماح بإدخال المزيد، ولكن هناك مشكلة، عندما تتحرك إلى وسط النص المكتوب يمكنك الاستمرار في الإدخال، هذا الإدخال يسبب الإزعاج لأن عند الإدخال يتحرك السهم إلى النهاية ويتم تقييد الاستمرار في الإدخال، ولكن يبقى النص الذي تم إدخاله في وسط النص، وهذا ليس ما نريده.

 لذلك يمكننا استخدام الوسيط هنا لتحقيق تأثير يرضينا، فقط عدة سطور من الكود يمكن أن يساعدك.

 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
  if (textField == self.liveThemeTextField) {
  //هذا if هو لتحقيق عملية الحذف، وإذا لم يكن هذا if موجودًا فقد يؤدي إلى أن لا يمكن استخدام مفتاح الحذف عند الوصول إلى حد الحروف المحددة.
    if (range.length == 1 && string.length == 0) {
      return YES;
    }
    //so easy
    else if (self.liveThemeTextField.text.length >= 30) {
      self.liveThemeTextField.text = [textField.text substringToIndex:30];
      return NO;
    }
  }
  return YES;
}

هذا هو نهاية محتوى هذا المقال، آمل أن يكون مفيدًا لتعلمكم، وأتمنى أن تدعموا دليل التدريب بالكثير من الدعم.

تحب أن تعرف