PracticU

UITextField - UITextFieldDelegate Validation of entered characters

בלי כתוביותעם כתוביות
PracticU › קורס פיתוח אפליקציות - לאייפון iPhone iOS - ב-Swift-Xcode › UITextField - UITextFieldDelegate Validation of entered characters
מילון מושגים:
הקסדצימלי - שיטת ספירה בבסיס 16, המשתמשת בספרות 0-9 ובאותיות A-F, ונפוצה לייצוג ערכים בינאריים בקצרה.
מתודה - פונקציה המוגדרת בתוך מחלקה ומתארת פעולה שאובייקטים מאותה מחלקה יכולים לבצע.

UITextField - UITextFieldDelegate Validation of entered characters
בשיעור מוסבר כיצד לבדוק את התווים שהמשתמש מזין לשדה טקסט לפני שהם נכנסים אליו. התרגיל בונה שדה שמקבל רק צבע בפורמט הקסדצימלי, כלומר סולמית ואחריה עד שני תווים מתוך הספרות 0 עד 9 והאותיות A עד F.
המתודה שמאפשרת בדיקה
- הדלגייט של UITextField מכיל מתודה בשם textField(_:shouldChangeCharactersIn:replacementString:). המתודה נקראת לפני כל שינוי, ומקבלת את הטווח שישתנה ואת הטקסט שייכנס במקומו.
- המתודה מחזירה true כדי לאשר את השינוי, או false כדי לדחות אותו.
שלבי הבדיקה
1. חישוב הטקסט החדש: בודקים את הטקסט הנוכחי ומחליפים את הטווח בטקסט החדש. כך מתקבל הטקסט שיהיה בשדה אחרי השינוי, ורק עליו בודקים.
2. בדיקת התחלה: הטקסט החדש חייב להתחיל בסולמית.
3. בדיקת אורך: מספר התווים אחרי הסולמית אינו עולה על שניים.
4. בדיקת תווים: כל התווים מופיעים בסט התווים המותר, שנבנה מהספרות והאותיות שהוגדרו.
5. אם כל הבדיקות עוברות, המתודה מחזירה true.
המרצה מציין שבדיקה של הטקסט הבא, ולא רק של הטקסט שנכנס, מאפשרת לדחות גם מחיקה או החלפה שיוצרת קלט לא חוקי.
הסיכום: הדלגייט מאפשר לאשר או לדחות כל שינוי בשדה, ובדיקה של הטקסט המתקבל לאחר השינוי מבטיחה שהקלט תקין.
השיעור הבא בקורס: עבודה עם תאריכים - UIDatePicker

פרקי ההרצאה: UITextField - UITextFieldDelegate Validation of entered characters

  1. 00:00

    מבוא: דלגייט לוולידציה של קלט

  2. 00:55

    מתודות הדלגייט ומסמכי אפל

  3. 02:07

    הפונקציה shouldChangeCharacters

  4. 03:41

    בדיקת אורך הטקסט עד שישה תווים

  5. 05:45

    הגדרת תווים מותרים בעזרת CharacterSet

  6. 07:15

    בדיקה שהקלט מוכל בתווים המותרים

  7. 08:40

    בדיקת תווים אסורים בדוגמה

  8. 09:19

    הגבלת אורך בשילוב עם תווים מותרים

תמלול ההרצאה: UITextField - UITextFieldDelegate Validation of entered characters

הטקסט המלא של הדקות הראשונות בהרצאה «UITextField - UITextFieldDelegate Validation of entered characters» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    שלום וברוכים הבאים בסרטון הקודם הראינו איך אפשר לשחרר את המקלדת בתגובה ללחיצה על כפתור go וגם ראינו בסרטונים קודמים איך לשחרר את המקלדת באופן כללי יותר בתגובה לסתם לחיצה פה במסך היום אנחנו רוצים להמשיך להרחיב את הדיבור על ה-UI טקסט פילד דלגייט אם אתם זוכרים בסרטון הקודם מה שעשינו היה פשוט להוסיף טקסט

  2. 00:27

    פילד ולומר לטקסט פילד שה-view controller שזה הקוד שאנחנו כותבים הוא הדלגייט של הטקסט פילד. עכשיו, דלגייט זה בעצם איזשהו דיזיין פאטרן מאוד מאוד נפוץ גם באנדרואיד, גם באי.או.אס, שבעצם עוזר לנו לקבל הודעות, אוקיי? מהטקסט פילד עוזר לנו המתכנתי לקבל

  3. 00:48

    הודעות מעניינות מהטקסט פילד. למשל, בואו נעבור על הקלאס הזה של ה-UI טקסט פילד בדוקומנטציה הרשמית של אפל, אז היום אומרים שיש לנו פה פשוט בטקסט פילד דלגייט אוסף של פעולות שימושיות שיעזרו לנו לנהל את העריכה וולידציה של הטקסט פילד, וזה מה שאנחנו רוצים לעשות היום, מה שאנחנו רוצים ללמוד היום אנחנו

  4. 01:10

    רוצים לוודא תקינות של קלט שקיבלנו כאן, יכול להיות שאני רוצה שהטקסט שלי יתחיל יהיה מספרים בלבד, אני רוצה שהטקסט שלי יהיה עד 6 ספרות, אני רוצה כל מיני פקודות וולידציה כאלה ואחרות, אוסף תווים כזה ואחר וזה מה שאנחנו רוצים בעצם לאפשר, בסדר אני רוצה לאפשר נניח איזה שהם תווים מסוימים ותווים אחרים לא לאפשר, אז אני רוצה לבדוק את זה אולי אני רוצה אורך

  5. 01:34

    של מחרוזת כן נגיד עד שלוש תווים אז מה שאנחנו נרצה לעשות היום זה באמת לוודא תקינות ככה של טקסט שהוקלט על ידי היוזר בעזרת הפרוטוקול הזה של ה-UI טקסט פילד דלגייט ומימושו אתם מוזמנים לגשת לדוקומנטציה הכללית ולקרוא על זה כן אבל אנחנו נעשה את הדוגמה כבר במסגרת המעשית

  6. 01:59

    בסדר אז יצרנו קשר בין הטקסט פילד שלי ל-view קונטרולר שבעצם אנחנו הדלגייט שלו ועכשיו מימשנו פה את הפרוטוקול של UI טקסטפילד דלגייט בשיעור שעבר וטיפלנו פה בעניין של הכפתור ריטרן היום אנחנו רוצים לטפל בפעולה טקסטפילד עומד להחליף תווים במסגרת מסוימת

  7. 02:20

    בוא נראה אז אנחנו פשוט נמלא פה טקסטפילד ויש פה שוד צ'יינג צ'ארקטרס אין ריינג' וואו איזה מתודה יפה אני אומר יפה יש לו שם של המתודה מסגיר הכל, הוא אומר אני עומד לשנות תווים באיזשהו ריינג' מסוים ואתה צריך להחזיר לי true או false אם אני מרשה לעשות את זה או לא, אוקיי?

  8. 02:45

    אם אני מחזיר פה true, בוא נחזיר פה רגע true, אז הוא אומר שמותר לשנות את התווים. בסדר, אבל הוא מודיע לי פה, אני עומד לשנות תווים, האם אתה מסכים שאנחנו נשנה? היוזר היא כלי טקסט, האם אתה מסכים לשינוי?

  9. 03:01

    כן או לא, לפני שאנחנו מכילים אותו. מה אנחנו מקבלים פה? מקבלים פה את הטקסט פילד, מקבלים פה range שאומר באיזה טווח של אותיות הולך להתבצע השינוי במקרה הזה זה יהיה האות השלישית נכון פה זה טווח כזה באמצע בין האות הראשונה לשנייה בסדר ביחס לטקסט שנמצא בטקסט פילם אוקיי עכשיו אם אני מסמן את הכל אז כאילו זה בטווח של בין 0 ל-1 נכון זאת אומרת כל

  10. 03:29

    האינדקסים של הסטרינגים אנחנו לא צריכים להיכנס לזה יותר מדי אבל זה מה שזה מייצג את הטווח של השינוי והסטרינג שעומד להיכנס במקום הסטרינג בטווח של השינוי בסדר לא לא להיבהל זה הרבה ככה דברים בואו נעשה פעולות מאוד פשוטות לאט לאט בוא נגיד אנחנו רוצים בצורה מאוד פרימיטיבית בהתחלה אנחנו ככה בוא

  11. 03:54

    נעשה ככה בוא ניקח את הטקסט שיש בטקסט פילד let text שווה טקסט פילד נקודת טקסט בסדר עכשיו אנחנו בטוחים שיש שם טקסט אז אני אקספליסיטלי אנרופ ומה שאני אגיד אני אשאל אם הטקסט קאונט קטן מאיזשהו מספר נניח נגדיר לעצמנו משתנה גם let maxcount שווה 6 תווים אז הכל טוב אם הוא קטן מ-6 אני מאפשר נכון אנחנו בעצם עושים פה ולידציה ראשונה שלנו בוא נבדוק בואו

  12. 04:34

    ננסה להגליד טקסט בהתחלה הכל עובד בסדר הופ 6 תווים נכון אי אפשר להמשיך עכשיו יש עם זה פה בעיה אתם רואים לא מימשנו את זה בצורה יותר מדי חכמה אז אנחנו קצת תקועים מבינים למה כי אולי אני רוצה להגיד אולי הרפלייסמנט סטרינג שהבאתם לי הוא ריק ואז אני בהחלט רוצה לאפשר את זה נכון? זאת אומרת אפשר ככה להמשיך

  13. 05:06

    ולהוסיף פה איזשהו תנאי וגם הרפלייסמנט סטרינג שנתתם לנו יש בו משהו אם אתם רוצים לרוקן אז בכיף בסדר אם אתם רוצים לרוקן אז יש אחרת רק שיש תווים בסדר בואו נראה את זה בא מנסה להקליד חמש תווים עכשיו אני מנסה למחוק אין בעיה בכיף נכון ברגע שהרפלייסמנט סטרינג ריק זה בעצם מחיקה ואז אני אומר, או שאם הצ'אר שש תווים אז אתה יכול להוסיף,

  14. 05:40

    אחרת אולי יש לך סטרינג רגע לתת לי ואז אני מרשה לך למחוק בכל מקרה. יפה. אז עכשיו בעצם נניח בצורה הכי בסיסית, אתם רוצים לאפשר שש תווים, זאת אופציה.

  15. 05:54

    אבל מה קורה חברים אם אתם רוצים לבדוק שהתווים שלכם נמצאים באיזשהו ריינג' מסוים, בסדר? זאת אומרת באיזשהו צ'אר סט מסוים. בואו תנו לי לדייק את מה שאני אומר.

  16. 06:08

    אני ארצה להגדיר לעצמי תווים מותרים. Allowed Characters, בסדר? או Charse Set. מה זה Set? זה Characters, ככה, אתם יודעים, Set זה אוסף שלא חוזר על עצמו, ואני רוצה להשתמש בסטים בגלל שסטים הם נהדרים ועוזרים לנו ממש ככה להתמודד עם בעיות סבוכות.

  17. 06:32

    בוא נגיד שאני רוצה את התווים בבסיס X הדצימלי, יש לנו 1 עד 6, עד 9 סליחה, 0 ו-a,b,c,d,e,f וגם a,b,c,d,e,f אוקיי, אלה התווים שאני רוצה להרשות.

  18. 06:52

    אתם יכולים להרשות פה איזה תווים שאתם רוצים, numbers only, אותיות בלבד, דברים שמתאימים ל-email וכך הלאה, אני מראה לכם פשוט דוגמא, תיקחו את זה לאן שאתם רוצים.

  19. 07:03

    אז אלה התווים שאני מתיר. איך אני עכשיו יכול לבדוק שהתווים שהיוזר הכניס, שהסטרינג הזה נמצא בתווים המותרים, אחרת אני לא מסכים לשינוי, נכון?

  20. 07:15

    בואו נבדוק מה התווים שהיוזר הקליד, נכניס אותם גם כן לסט, בגלל שסטים זה קבוצות, ובקבוצות יש כל מיני פעולות שעוזרות לנו לבדוק, האם הקבוצה הזאת מוכלת בקבוצה השנייה, וכך הלאה.

  21. 07:28

    ואז בעצם זה פותר לי את כל הבעיות, אז אנחנו בהחלט נשתמש פה בסטים. let entered set, האותיות שהיוזר הכניס, שווה גם כן character set, בסדר? in-string, אותו דבר כמו שהשתמשתי קודם, שהפעם אני לוקח את ה-string שהיוזר הקליד, וזה מה שהיוזר הכניס נכון יוזר set ואנחנו set בסדר our set allowed set עכשיו כדי לבדוק

  22. 08:03

    האם ה-entered set מוכל בתוך ה-allowed set אנחנו יכולים לומר פה נניח entered set סליחה בוא נגיד ככה נשאל את זה בצורה אחרת האם ה-allowed set מכיל את כל ה-entered set בסדר אז בואו נראה איך אנחנו עושים את זה ה-allowed הוא בעצם סופר סט של מה שהיוזר הכניס של האנטר סט בסדר כן או לא בוא נבדוק אם זה עובד לנו ואיך זה עובד גם לא בינינו פה את העניין

  23. 08:48

    של המספר תווים נכון זה ראינו קודם בסדר בוא נראה אני מנסה להכניס נקודותיים לא מרשה לי מנסה להכניס שלוש למה לא זה בתווים המותרים מנסה להכניס דולר לא הולך מנסה להכניס סולמית כן יפה r לא נכון וואו מגניב בוא ניקח על עצמנו משימה אחרונה ואמיתית לפעמים אנחנו רוצים לאפשר רק שתי תווים ושיהיו

  24. 09:19

    אקס בסדר זאת אומרת בואו ניקח את זה עד הסוף את הדוגמה הזאת אז מה אני אומר איזה ולידציה אני רוצה מותר להכניס סולמית ועוד שתי תווים בסדר אז למשל FF נכון זה מה שאני מרשה להכניס זה הגודל המותר יפה איך אני כופה את זה אז כמה תווים יש פה שלוש תווים נכון אנחנו יכולים בצורה נאיבית לעשות כמו קודם עם הטריק הזה של בוא נראה איך עשינו את זה

  25. 09:47

    אמרנו קודם כל שזה יהיה בתווים המותרים אחרת אנחנו לא מסכימים נכון בנוסף באנו והלכנו בצורה הקלה ואמרנו יאללה בוא נוסיף גם עוד ראשון למשל הטקסט שיש עכשיו אקאונט שלו קטן משלוש או קטן מהמאקס הכי טוב נכון אנחנו משתמשים פה במשתנה שהגדרנו למעלה נסדר אותו להיות שלוש או שהסטרינג שהיוזר הכניס הוא סטרינג ריק זה כמעט עובד טוב חברה

  26. 10:22

    אני אגיד לכם את האמת אולי אתם לא הייתם מרגישים והייתם הולכים עם זה הביתה מרוצים אבל אנחנו פה בשביל ללמוד אני אראה לכם זה עובד פיקס רק אני יכול ללמד אתכם עוד יותר טוב אז רגע בוא נראה סתם מנסה לשים אותיות אוקיי רצינו גם שזה יתחיל בזה נכון זאת אומרת לאו דווקא כן רגע אז איך אני אומר מתחיל בסולמית גם בוא נוסיף עוד אחד אנחנו לא כל כך

  27. 10:49

    יכולים להגיד מתחיל בסולמית כי הסטרינג שקיבלנו פה כפרמטר זה בעצם רק הסטרינג שרוצים להכניס ויכול להיות שהטקסט הוא ריק ויש פה הרבה הרבה איפים ודברים כאלה ואנחנו מסתבכים פה עם האלגוריתם בגלל שהרעיון הזה פה הוא לא הכי מוצלח לא ככה עושים את הוולידציה בצורה מקצועית.

לקורס המלא: קורס פיתוח אפליקציות לאייפון

ההרצאה הקודמת: UITextField - UITextFieldDelegate Intro And Return Button

ההרצאה הבאה: עבודה עם תאריכים - UIDatePicker

הרצאות קשורות מקורסים אחרים

  • ולידציה - Validation
  • Validation - ולידציה
  • שימוש ב-Escape Characters ב-MySQL - חלק 1
  • ולידציה על קלט המשתמש - Validation

קורסים נוספים במסלול

  • קורס יסודות התכנות - שפת JAVA - קורס ג'אווה למתחילים
  • קורס פיתוח אפליקציות - לאנדרואיד - Android - ב-JAVA
  • קורס פלאטר - Flutter - שפת DART של גוגל למובייל - פיתוח אפליקציות לאנדרואיד ואייפון
  • קורס PhoneGap - פיתוח אפליקציות לאנדרואיד ואייפון