IOS рдлрд╝реАрд▓реНрдб рд╕рддреНрдпрд╛рдкрди - рддреНрд╡рд░рд┐рдд рдФрд░ рдЖрд╕рд╛рди

рдЫрд╡рд┐рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб рдХрд╛ рд╕рддреНрдпрд╛рдкрди рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рдЖрдо рдХрд╛рд░реНрдп рд╣реИред рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдФрд░ рдкрдВрдЬреАрдХрд░рдг рдХрд╛ рд░реВрдк рд▓реЗрдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдХрдИ рдЗрдирдкреБрдЯ рдЯреВрд▓ рднреА рд╣реЛрддреЗ рд╣реИрдВ, рдЬреЛ рдкрд░реАрдХреНрд╖рдХреЛрдВ рдХреА рдЕрдкреЗрдХреНрд╖рд┐рдд рд╕рд╛рдзрдирд╛рддреНрдордХ - рдкрд░рд┐рд╖реНрдХреГрдд рдЙрддреНрддреЗрдЬрдирд╛ рдХреЛ рдЬрдиреНрдо рджреЗрддреЗ рд╣реИрдВред рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдПрдХ рдЙрдиреНрдирдд, рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рд╕рдХреНрд╖рдо рд╕рдореБрджрд╛рдп рдиреЗ рд╕реАрдЦрд╛ рд╣реИ рдХрд┐ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдПрдореНрдмреЗрдб рдХрд░рдХреЗ рдЙрдирдХреЗ рд╕рд╛рде рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдП ред

рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдЬрдм рдЖрдкрдХреЛ рдкрдВрдЬреАрдХрд░рдг рдФрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рд▓рд┐рдП рдЦреБрдж рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд▓рдХреНрд╖реНрдп рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рдХреЛрдб рдХреЛ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓рдЧрднрдЧ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдмрджрд▓рд╛рд╡ рдХреЗред рдФрд░, рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд, рдЗрд╕ рдХреЛрдб рдХреЗ рдЖрдЧреЗ рд░рдЦрд░рдЦрд╛рд╡ рдХреЗ рд▓рд┐рдП рдорд╛рдирд╡-рдШрдВрдЯреЗ рдХреЛ рдмрдврд╝рд╛рдП рдмрд┐рдирд╛ред рд▓реЗрдХрд┐рди рджреБрдирд┐рдпрд╛ рдЗрддрдиреА рд╕рд░рд▓ рдирд╣реАрдВ рд╣реЛрдЧреА рдЕрдЧрд░ рдпрд╣ рдпреВрдЖрдИ / рдпреВрдПрдХреНрд╕ рдбрд┐рдЬрд╛рдЗрдирд░реЛрдВ рдХреЗ рд░рдЪрдирд╛рддреНрдордХ рдЖрд╡реЗрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдерд╛, рдЬреЛ рдХрд┐ рдЗрдЪреНрдЫреБрдХ рдкрд░рдВрдкрд░рд╛, рддрд░реНрдХ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рдЬреНрдЮрд╛рди рдХреЗ рд╡рд┐рдкрд░реАрдд рд╣реИрдВ, рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рдирдП рддрд░реАрдХреЛрдВ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдирдХреА рд░рд╛рдп рдореЗрдВ, рдХрдИ рд░реВрдкреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рдЖрд╡рд╢реНрдпрдХ рдирд┐рдпрдВрддреНрд░рдг, рдкрд╣реБрдВрдЪ рдЬреЛ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб рдФрд░ рдЕрдиреНрдп рдирд┐рдпрдВрддреНрд░рдг рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдХреА рд╡реИрдзрддрд╛ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдЯреЗрд╢рд┐рдпрди рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рд╢рд╛рдпрдж рд╣реА рджреБрд░реНрд▓рдн рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдбреЗрд╡рд▓рдкрд░ рдХреА рдЬрд▓рди рдЗрд╕ рдмрд╛рдд рдХреЗ рдЕрдиреБрдкрд╛рдд рдореЗрдВ рдмрдврд╝рддреА рд╣реИ рдХрд┐ рдЙрд╕реЗ рдХрд┐рддрдиреА рдмрд╛рд░ DRY рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░рдирд╛ рд╣реИ: рдПрдХ рддрд░рдл, рдкреЗрд╢реЗрд╡рд░ рдЕрднрд┐рдорд╛рди рд╕рдордЭреМрддрд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░реА рдУрд░, рдПрдХ рд▓рдВрдмреЗ рдкрд░реАрдХреНрд╖рдг рдЪрдХреНрд░ - рдбрд┐рдмрдЧрд┐рдВрдЧ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдХреЛрдб рд╕рдмрд╕реЗ рдкреНрд░рднрд╛рд╡реА рддрд░реАрдХрд╛ рд╣реИред рд╡реИрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдЕрджреНрд╡рд┐рддреАрдп "рдмрд╛рдЗрдХ" рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдиреАрд░рд╕ рдХреЙрдкреА рдХрд┐рдП рдЧрдП рдХреЛрдб рдХреЛ рдмрдирд╛рдП рд░рдЦрдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреА рдЦреЛрдЬ рди рдХреЗрд╡рд▓ рдбреЗрд╡рд▓рдкрд░ рдХреА рд░рдЪрдирд╛рддреНрдордХрддрд╛ рдХреЛ рдмрдврд╝рд╛рддреА рд╣реИ, рдмрд▓реНрдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрднрд░рддрд╛ рднреА рдЬреЛрдбрд╝рддреА рд╣реИред

рдЙрд╕реА рд╕рдордп, рдЖрдИрдУрдПрд╕ рдПрд╕рдбреАрдХреЗ рдХреБрдЫ рдмреЗрд╣рдж рдХрдо рдЖрдВрдХрдиреЗ рд╡рд╛рд▓реЗ рдлреАрдЪрд░ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рди рдХреЗрд╡рд▓ рд╕рддреНрдпрд╛рдкрди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрдИ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рд╣реЛрддреЗ рд╣реИрдВ - рдШреЛрд╖рдгрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдЬреАрд╡рди рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИред рдирд┐рд╕реНрд╕рдВрджреЗрд╣, рд▓реЗрдЦрдХ рдХреЛ рдкреНрд░реЗрдорд┐рдпреЛрдВ рдХрд╛ рдЕрдиреБрдорд╛рди рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╢рд┐рд╡рд┐рд░ рдкрддрд╛ рд╣реИ"undiluted" рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рджреЛрд╕реНрддреЛрдВ, рд▓реЗрдХрд┐рди рдЬрдм рд╕реЗ рд▓реЗрдЦ рдХреЗ рд▓реЗрдЦрдХ рдиреЗ рдПрдордПрд╕ рдбреЙрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдпреВрдЖрдИ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдХреЗ рдкреЗрд╢реЗрд╡рд░ рдЗрдВрдЯрд░рдлреЗрд╕ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рдПрдХ рдФрд░ рдЖрджрд░реНрд╢ рд╡рд░реНрдЧ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдордп рдмрд░реНрдмрд╛рдж рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдмрдбрд╝реА рдЗрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рд╕рдорд╛рди рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдорд╛рдЙрд╕ - рд╡рд░реАрдпрддрд╛ рдорд╛рдЙрд╕ рдХреЛ рджреА рдЬрд╛рдПрдЧреАред рддрджрдиреБрд╕рд╛рд░, рдпрд╣ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рдХрд╛рд╕ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рддреЗрдЬ рдХрд░рдиреЗ рдФрд░ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рдХрдо рд╕реЗ рдХрдо рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПред

рдЕрд╕реНрд╡реАрдХрд░рдг:
, . . , тАФ .

рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдиреНрдпреВрдирддрдо рдХрд╛рд░реНрдп рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:

рд▓реЙрдЧрд┐рди рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб рдФрд░ рдПрдХ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдмрдЯрди рд╣реИрдВред рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдмрдЯрди рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб рдореЗрдВ рдирд┐рд╣рд┐рдд рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕реНрдерд┐рддрд┐ (isnnable) рдмрджрд▓рддрд╛ рд╣реИред

рдЗрд╕ рдХрд╛рд░реНрдп рдХрд╛ рдереЛрдбрд╝рд╛ рдФрд░ рдЙрдиреНрдирдд рд╕рдВрд╕реНрдХрд░рдг рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдИрдореЗрд▓, рдкрд╛рд╕рд╡рд░реНрдб рдФрд░ рдлреЛрди рдирдВрдмрд░ рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб рд╣реИрдВ, рд╕рд╛рде рд╣реА рджреЛ рдмрдЯрди - рдкрдВрдЬреАрдХрд░рдг рдФрд░ рдкреНрд░рд╡реЗрд╢ рдХрд┐рдП рдЧрдП рдлреЛрди рдХреЗ рд▓рд┐рдП рдПрдХ рдПрд╕рдПрдордПрд╕ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рд╣реИред рдкрдВрдЬреАрдХрд░рдг рдмрдЯрди рдХреЗрд╡рд▓ рддрдм рдЙрдкрд▓рдмреНрдз рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рдкреНрд░рддреНрдпреЗрдХ рдлрд╝реАрд▓реНрдб рдореЗрдВ рд╕рд╣реА рдбреЗрдЯрд╛ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛред рдФрд░ рдХреЛрдб рдЕрдиреБрд░реЛрдз рдмрдЯрди рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдлреЛрди рдирдВрдмрд░ рдлрд╝реАрд▓реНрдб рдорд╛рдиреНрдп рд╣реЛрддрд╛ рд╣реИред

рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдорд╛рдзрд╛рди- рдПрдХ рджреГрд╢реНрдп рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ "рдЕрдЧрд░" рдФрд░ "рд╕реНрд╡рд┐рдЪ" рдмрдпрд╛рдиреЛрдВ рдХреЗ рд╕рдВрдпреЛрдЬрди рд╕реЗ рдЕрдиреНрдпреЛрдиреНрдпрд╛рд╢реНрд░рд┐рдд рдЭрдВрдбреЗ рдХрд╛ рдирд┐рд░реНрдорд╛рдгред рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдХрдард┐рдирд╛рдИ рдмрдврд╝ рдЬрд╛рдПрдЧреАред рдПрдХ рдЕрдзрд┐рдХ рдЙрдиреНрдирдд рд╕рдорд╛рдзрд╛рди рдПрдХ рд░рд╛рдЬреНрдп рдорд╢реАрди рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред рд╕рдорд╛рдзрд╛рди рдЙрддреНрдХреГрд╖реНрдЯ рд╣реИ - рд▓реЗрдХрд┐рди рд╕рдордп рд▓реЗрдиреЗ рд╡рд╛рд▓рд╛, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдЙрдЪреНрдЪ рдкреНрд░рд╡реЗрд╢ рд╕реАрдорд╛ рд╣реИ - рдФрд░ рдпрд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдореИрдВ рдЖрд▓рд╕реА (рдПрдХреЗ "рд╕рдЪ") рдбреЗрд╡рд▓рдкрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдПрдХ рдЖрд▓рд╕реА рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реАрдорд╛
, , . (┬л ┬╗ ), , .

рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд╛ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдЪрд╛рд░ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:

рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд░реНрдЧ рд╣реИ рдФрд░ рд╕рддреНрдпрд╛рдкрди рдкреНрд░рдмрдВрдзрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд░реНрдЧ рд╣реИред рдЗрдирдкреБрдЯ рдХреНрд╖реЗрддреНрд░ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЕрдкреЗрдХреНрд╖рд┐рдд рдерд╛, UITextField рд╕реЗред рд╕рддреНрдпрд╛рдкрди рдкреНрд░рдмрдВрдзрдХ - UIControl рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛, рдЗрд╕рдореЗрдВ рдорд╛рдиреНрдп рддрддреНрд╡реЛрдВ рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╣реЛрддрд╛ рд╣реИ (рдпрд╣ UITextField рдХреЗ рд╡рдВрд╢рдЬ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ) рдФрд░ "рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ" рдкреИрдЯрд░реНрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд╣ рдЕрдиреНрдп рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдмрдВрдзрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдорд╛рдиреНрдп рддрддреНрд╡реЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрдиреЗ рдкрд░ рдЙрдирдХреА рдкрд╣реБрдВрдЪ рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдпрджрд┐ рдлрд╝реАрд▓реНрдб рдореЗрдВ рдПрдХ рдЕрдорд╛рдиреНрдп рдИрдореЗрд▓ рд╣реИ, рддреЛ рдкрдВрдЬреАрдХрд░рдг рдмрдЯрди рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред



рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб рд╕реНрд╡-рдорд╛рдиреНрдп рд╣реИрдВ - рд╡реЗ рдЗрд╕ рд╕рд╡рд╛рд▓ рдХрд╛ рдЬрд╡рд╛рдм рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдЙрдирдореЗрдВ рдирд┐рд╣рд┐рдд рдбреЗрдЯрд╛ рд╡реИрдз рд╣реИ рдФрд░ рдЙрдирдХреА рд╕реНрдерд┐рддрд┐ рдмрджрд▓ рд╕рдХрддреА рд╣реИред рдХреБрдЫ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб рдХреЛ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рд╡рд░реНрдЧ (рдФрд░ рдЙрд╕рдХреЗ рд╡рдВрд╢рдЬ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреНрдпрд╛рд╕ рдХреЛрдб рдХреА рдШреЛрд╖рдгрд╛рддреНрдордХ рдФрд░ рд╕реНрдХреЗрд▓реЗрдмрд▓ рдкреЛрд░реНрдЯреЗрдмрд┐рд▓рд┐рдЯреА рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЖрдирдВрдж рд▓реЗрдирд╛ рдЕрд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИред рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб рдпрд╛ рдХреЛрдИ рдЕрдиреНрдп рдорд╛рдиреНрдп рдирд┐рдпрдВрддреНрд░рдг рдлрд╝реЙрд░реНрдо рдХреЗ рд╕рд░рд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ:

@objc protocol IValidatable : class {
    varisValid: Bool { get }
}

рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдорд╛рдиреНрдпрддрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ GitHub рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╕реНрдерд┐рдд рдЙрджрд╛рд╣рд░рдг рд╕реЗ 4 рдлрд╛рдЗрд▓реЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ред

  • DSTextField рд╡рд░реНрдЧ рд╕рддреНрдпрд╛рдкрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рдВрдХреЗрдд рдХреЗ рд╕рд╛рде рдПрдХ рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред
  • DSValidationManager рд╡рд░реНрдЧ рдПрдХ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
  • рдПрдХреНрд╕рдЯреЗрдВрд╢рди StringOptional + Utils - рдЗрд╕рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рдзрд┐ рд╣реИ рдЬреЛ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╡рд░реНрддрдорд╛рди рд▓рд╛рдЗрди рдХрд╛ рдкрд╛рда рд╡реИрдз рд╣реИред
  • UIView + рд▓реЗрдпрд░ , UIView рдХреЗ рдХрд┐рд╕реА рднреА рд╡рдВрд╢рдЬ рдХреЛ рджрд┐рдП рдЧрдП рдЪреМрдбрд╝рд╛рдИ рдХреЗ рдлреНрд░реЗрдо рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрд░реАрдХрд╛ рд╣реИред

рдХрдбрд╝рд╛рдИ рд╕реЗ рдмреЛрд▓рддреЗ рд╣реБрдП, рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдЕрдиреНрдп рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд▓рд┐рдП рдЙрд╕реА рддрд░рд╣ рд╕реЗ рд╕рддреНрдпрд╛рдкрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ DSValidationManager рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ред рдмрд╛рдХреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдЖрдкрдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╡реАрдбрд┐рдпреЛ (gif) рдореЗрдВ рд╕рддреНрдпрд╛рдкрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджрд┐рдЦрд╛рдИ рдЧрдИ рд╣реИред


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрдирдкреБрдЯ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдлрд╝реАрд▓реНрдб рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИ, рдФрд░ рдбреЗрдЯрд╛ рджрд░реНрдЬ рд╣реЛрддреЗ рд╣реА рд╕рддреНрдпрд╛рдкрди рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рд╕рддреНрдпрд╛рдкрди рдкреВрд░рд╛ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдлрд╝реАрд▓реНрдб рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдлрд╝реАрд▓реНрдб рдкрд░ рдПрдХ рд╢рд┐рд▓рд╛рд▓реЗрдЦ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ рдЬреЛ рддреНрд░реБрдЯрд┐ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЬрдм рддрдХ рджреЛрдиреЛрдВ рдлрд╝реАрд▓реНрдб рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддреЗ рддрдм рддрдХ рдкрдВрдЬреАрдХрд░рдг рдмрдЯрди рдЕрдиреБрдкрд▓рдмреНрдз рд░рд╣реЗрдЧрд╛ред

рджреВрд╕рд░реА рд╕реНрдХреНрд░реАрди рдкрд░ рдПрдХ рд╕рдорд╛рди рд╕реНрдерд┐рддрд┐ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрддреА рд╣реИ (рдЬреЛ рдкрдВрдЬреАрдХрд░рдг рдХреА рд╕рдХреНрд░рд┐рдпрддрд╛ рдХреЗ рдмрд╛рдж рд╣реА рдЙрдкрд▓рдмреНрдз рд╣реЛрддреА рд╣реИ)ред рд▓реЗрдХрд┐рди рджреВрд╕рд░реА рд╕реНрдХреНрд░реАрди рдкрд░, рдлрд╝реАрд▓реНрдб рдФрд░ рдмрдЯрди рдХрд╛ рд╕рддреНрдпрд╛рдкрди рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд╣реЛрддрд╛ рд╣реИ - рдкрдВрдЬреАрдХрд░рдг рдмрдЯрди рдХреЗрд╡рд▓ рддрднреА рдЙрдкрд▓рдмреНрдз рд╣реЛрддрд╛ рд╣реИ рдЬрдм рд╕рднреА рдлрд╝реАрд▓реНрдб рд╡рд┐рдлрд▓ рд╣реЛ рдЧрдП рд╣реЛрдВред рдЙрд╕реА рд╕рдордп, рдПрд╕рдПрдордПрд╕ рднреЗрдЬрдиреЗ рдХрд╛ рдмрдЯрди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрдкрд▓рдмреНрдз рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдлреЛрди рдирдВрдмрд░ рд╡рд╛рд▓рд╛ рдХреНрд╖реЗрддреНрд░ рдорд╛рдиреНрдп рд╣реЛрддрд╛ рд╣реИред

рдФрд░ рдЕрдм рдЪрд╛рд▓:рдкреВрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╡реНрдпреВ рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рд╡рд░реНрдЧ рд╣реЛрддрд╛ рд╣реИ, рд╡рд╣реА рдЬреЛ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╕рдордп Xcode рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЦрд╛рд▓реА рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдбрд┐рд╕реНрдкреИрдЪрд░ рдХреА рдорджрдж рд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред



рдПрдХ рдЪреМрдХрд╕ рдкрд╛рдардХ рдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдЙрддреНрддрд░рджрд╛рддрд╛ рдХреЗ рджрд╛рдИрдВ рдУрд░ рдорд╛рдирдХ Xcode рдШрдЯрдХ рдкреИрд▓реЗрдЯ рд╕реЗ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП, рдХреНрд▓рд╛рд╕ рдкреИрд░рд╛рдореАрдЯрд░ DSValidationManager рд╡рд░реНрдЧ рджреНрд╡рд╛рд░рд╛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред рдЗрдирдкреБрдЯ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдЪрд╛рд▓ рдЪрд▓реА рдЧрдИ рдереА, рдПрдХрдорд╛рддреНрд░ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ DSTextField рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред

рдЕрдм рд╣рдорд╛рд░реА рд╕рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдирд┐рдореНрди рд╕рд░рд▓ рдЪрд░рдгреЛрдВ рдореЗрдВ рдЖрддреА рд╣реИ:

  1. рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб рдХреЗ рд╕рд╛рде рд╕рддреНрдпрд╛рдкрди рдХреЙрдореНрдкреНрд▓реЗрдХреНрд╢рди рд╕реЗ рд╡реИрд░рд┐рдПрд╢рди рдореИрдирдЬрд░ рдХреЛ рд╕рдВрдмрджреНрдз рдХрд░реЗрдВред


  2. рдЖрдк рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдмрдЯрди рдХреЗ рд╕рд╛рде ValidationManager рд╕реЗ ManageControls рд╕рдВрдЧреНрд░рд╣ рдХреЛ рд╕рдВрдмрджреНрдз рдХрд░реЗрдВред


  3. рд╡рд┐рдкрд░реАрдд рджрд┐рд╢рд╛ рдореЗрдВ рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдбреНрд╕ рдХреЛ ValidationManager рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рдХрд░, рдЗрд╕реЗ рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдмрдирд╛рддреЗ рд╣реИрдВред

  4. рдЗрдирдкреБрдЯ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ, рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдФрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢, рд╕рд╛рде рд╣реА рдЕрдиреНрдп рдХрд╕реНрдЯрдо рдФрд░ рдорд╛рдирдХ рдЧреБрдг рдорд╛рдирдХ Xcode рдкреНрд░рдмрдВрдзрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реЗрдЯ рдХрд░реЗрдВред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рдм рдХреБрдЫ "рдЬреИрд╕рд╛ рд╣реИ" рдЫреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдХреАрдмреЛрд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдлрд┐рд░, рдЯрд╛рдЗрд░рдиреЗрдЯ рд╕реЗ рд╕реВрддреНрд░ рдХреЛ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдХрд░рдирд╛ рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдЧрд╛рдпрдм рд╣реИ, рддреЛ рдпрд╣ рдмрд╕ рд╕реНрдХреНрд░реАрди рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ред


DSValidationManager рдХреЛрдб рдмрджрд╕реВрд░рдд рдЖрджрд┐рдо рд╣реИред

import UIKit

@objc protocol IValidationManager : class {
    func verificated()
}

@objc protocol IValidatable : class {
    var isValid: Bool { get }
}

class DSValidationManager : UIControl, IValidationManager
{
    @IBOutlet var verifiedControls: [UIControl]?
    @IBOutlet var managedControls: [UIControl]?

    private (set) var valid : Bool = false {
        didSet {
            self.sendActions(for: .valueChanged)
        }
    }
    
    overrideinit(frame: CGRect) {
        super.init(frame: frame)
        self.verificated()
    }
    
    required init?(coder: NSCoder) {
        super.init(coder: coder)
        self.verificated()
    }

    func verificated() {
        self.checkVerifiedControls()
        self.controlsAction()
    }

    private func checkVerifiedControls() {
        guard let list:[IValidatable] = self.verifiedControls?.filter({$0 isIValidatable}) as? [IValidatable]
            else { return }
        self.valid = list.filter({!$0.isValid}).count==0
    }
    
    private func controls Action() {
        guard let list = self.managedControls else { return }
        for item in list {
            item.isEnabled = self.valid
        }
    }
}

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд╣ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╕реЗ рдПрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░реЗ рдкрд░ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред

рдПрдХ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдЗрд╕реЗ рдПрдХ рдРрд╕реА рд╕рдВрдкрддреНрддрд┐ рдмрдирд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рднреА рдирд╣реАрдВ рдорд╛рдирд╛ рдерд╛ред рдЖрдк рдХрдиреЗрдХреНрд╢рди рд╕реЗ рд╕реАрдзреЗ ValidationManager рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдЦреАрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рдмрдЯрди рдХреЛ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╣рд╛рдВ рдПрдХ рдШрдЯрдирд╛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рдмрдВрдзрдХ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕реАрдзреЗ рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдЖрдкрдХреЛ рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рдХреЗрд╡рд▓ рд▓реЙрдХ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдмрд▓реНрдХрд┐ рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рдХрд╛рдо рднреА рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдорд╛рд░реНрдЪ рдЦреЗрд▓ рдпрд╛ рдПрд▓рд┐рдЬрд╛рдмреЗрде рджрд┐рдЦрд╛рдПрдВ)ред

рд╕рднреА TextEdit рдХреЛрдб рдореЗрдВ рд╕реЗ, рдпрд╣ рдХреЗрд╡рд▓ рдЗрд╕ рдмрд╛рдд рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдлрд╝реАрд▓реНрдб рдХреЛ "ред рдЕрдорд╛рдиреНрдп " рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ " рд╕рддреНрдпрд╛рдкрд┐рдд () рд╡рд┐рдзрд┐ рдХреЛ рдЦреАрдВрдЪрдирд╛ рдЪрд╛рд╣рд┐рдП"тАЬрдЕрдкрдиреЗ рдбреЗрд▓реАрдЧреЗрдЯ рд╕реЗред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб рдкреНрд░рдмрдВрдзрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рдВрджрд░реНрдн рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдВрдЧреНрд░рд╣ред рдпрд╣ рдЖрдкрдХреЛ рдХрдИ рдкреНрд░рдмрдВрдзрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб рдХреЛ рдмрд╛рдВрдзрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рддрджрдиреБрд╕рд╛рд░, рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдзрд┐ рдХреЛ рдЦреАрдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

    var isValid: Bool {
        return self.text.verification(self.expression, required:self.valueRequired)
    }

    @IBOutlet var validateDelegates: [IValidationManager]?

    private func handleDelegateAction(_ sender: UITextField) {
        guard let list = self.validateDelegates else { return }

        for validateDelegate in list {
            validateDelegate.verificated()
        }
    }

рдЕрдм, рдпрджрд┐ рдЖрдкрдХреЛ рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рдлрд╝реЙрд░реНрдо рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдХрд╕реНрдЯрдо рдкреНрд░реЙрдкрд░реНрдЯреА рд╡реИрд▓реНрдпреВрдЬрд╝ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рднреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ - рдпрд╣ рдмрд▓реНрдХ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд░рдирдЯрд╛рдЗрдо рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдХреЙрдкреА рдХрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдХ рдирдП рдлрд╝реАрд▓реНрдб рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛ (рдХреЗрд╡рд▓ рдХреНрд▓рд╛рд╕ рдирд╛рдо рдХреЛ рдмрджрд▓рдирд╛ рди рднреВрд▓реЗрдВ)ред


рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рд╣реЗрдбрд░ рдореЗрдВ "рдСрдмреНрдЬреЗрдХреНрдЯ" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЯреНрд░рд┐рдХ рдХреЛ рдХреЗрд╡рд▓ рдХреНрд╖реЗрддреНрд░ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдпрд╣ рдПрдорд╡реАрдкреА рдХреЗ рд╕рд╛рде рдПрдорд╡реАрд╡реАрдПрдо рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рдЖрд░рдПрдХреНрд╕ рдХреЗ рдмрд┐рдирд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рд╕рдмрд╕реЗ рдЖрдо рдЙрдкрдпреЛрдЧ рдиреЗрдЯрд╡рд░реНрдХ рд╕рд╛рдЭрд╛рдХрд░рдг рдФрд░ рдХреЛрд░рдбрд╛рдЯрд╛ рдореЙрдбрд▓ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреА рдЕрдзрд┐рд╕реВрдЪрдирд╛ рд╣реИред

All Articles