UITextField الهدف/الإجراء مقابل أساليب التفويض
-
12-12-2019 - |
سؤال
اعتدت استخدام 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.
فيما يتعلق