سؤال

اعتدت استخدام XCode لتطوير تطبيقاتي واستخدام ذلك؛يمكنني إنشاء رابط في IB/Storyboard الذي قام بتجميع هذه الطرق:

- (void)addTarget:(id)target action:(SEL)action forControlEvents: (UIControlEvents)controlEvents

الى متى

ومع ذلك، لا، فأنا أفعل كل ذلك برمجيًا (في Rubymotion، على الرغم من أنه ليس بالضرورة ذو صلة) وبالنظر إلى وثائق UITextField، وجدت بعض طرق التفويض، والتي قمت بتنفيذها على النحو التالي:

def textFieldShouldReturn(text_field)
  text_field.resignFirstResponder
end

def textFieldShouldEndEditing(text_field)
  # this is for validations; don't set a first responder here
  true
end

def textFieldDidEndEditing(text_field)
  text_field == @email_field ? @password_field.becomeFirstResponder : delegate.validate_login_info
end

لكن باستخدام هذا، وجدت أنني لا أستطيع التنقل بين حقول الإدخال (التي لدي حقلان منها؛البريد الإلكتروني وكلمة المرور) كما فعلت من قبل باستخدام نهج addTarget.

ما هو الفرق بين هذين النهجين؟فهل ينفذ الأول الثاني خلف الكواليس؟لا أفهم لماذا يسمح لي أحدهم بالمرور بينما لا يسمح لي الآخر بذلك.هل قمت للتو بتنفيذ أساليب التفويض بشكل مختلف عما يفعله نهج الهدف/الإجراء خلف الكواليس؟

تم تقدير ردود الفعل ، باشون

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

المحلول

هذا لا علاقة له بالهدف/الإجراء.أفترض أنك تقصد في Interface Builder أنك ستسحب من ملف UITextField إلى File's Owner وحدد مندوبًا من HUD.

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

@email_field.delegate    = self
@password_field.delegate = self

ما ورد أعلاه يفترض أن الفئة التي تنشئ ملف UITextFieldسيكون بمثابة مندوب لهم.

نصائح أخرى

لا أعرف إذا كان هناك أي فرق بين الوفد والهدف / العمل في هذه الحالة، ولكن مع الوفد بهذه الطريقة تعمل: giveacodicetagpre.

فيما يتعلق

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