IOS рдХреЗ рд▓рд┐рдП рдХрд╕реНрдЯрдо рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдХреАрдмреЛрд░реНрдб рд▓рд┐рдЦрдирд╛

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

рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдПрдХ рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб рд╣реИ рдЬреЛ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдФрд░ рдЕрдВрдХрдЧрдгрд┐рддреАрдп рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдлреЛрди рдХреАрдмреЛрд░реНрдб рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ - рдЗрд╕рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рд╕рднреА рдСрдкрд░реЗрд╢рди рдкреНрд░рддреАрдХ рдирд╣реАрдВ рд╣реИрдВ, рдЖрджрд┐ред

рдмреЗрд╢рдХ, рдЖрдкрдХреЛ рдЬреЛ рдХреБрдЫ рднреА рдЪрд╛рд╣рд┐рдП рд╡рд╣ рдПрдХ рдирд┐рдпрдорд┐рдд рдХреАрдмреЛрд░реНрдб рдкрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ 95% рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдпрд╛рдж рд░рдЦреЗрдВ, рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдЕрдВрдХ + рдЕрдВрдХрдЧрдгрд┐рддреАрдп рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдкреНрд░рддреАрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)ред

рдирд┐рд╖реНрдХрд░реНрд╖ рдЦреБрдж рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ: рдЖрдкрдХреЛ рдЕрдкрдирд╛ рдХреАрдмреЛрд░реНрдб рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдареАрдХ рд╣реИ, рдЖрдкрдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ !



рддреЛ рд╣рдореЗрдВ рдХрд┐рд╕ рддрд░рд╣ рдХреЗ рдХрд┐рд░рджрд╛рд░реЛрдВ рдХреА рдЬрд░реВрд░рдд рд╣реИ? ".0123456789% + - ├Ч,", рдФрд░ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд▓рд┐рдП рд╣рдо "тЖ╡" (рд╡рд╛рдкрд╕реА) рдФрд░ "space" (рдмреИрдХрд╕реНрдкреЗрд╕) рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рд▓реЗрдЖрдЙрдЯ рдбреНрд░рд╛ рдХрд░реЗрдВ:



рдареАрдХ рд╣реИ, рдпрд╣ рдЕрдЪреНрдЫрд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИред рдЕрдм рдЖрдкрдХреЛ рдЗрд╕ рдЪреАрдЬрд╝ рдХреЛ рдЯреЗрдХреНрд╕реНрдЯ рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб рдореЗрдВ рдкреЗрдВрдЪ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

IOS 3 рдХреЗ рдмрд╛рдж рд╕реЗ, рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдШрдЯрдХ рдЬреЛ рдЗрдирдкреБрдЯ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ (рдЬреИрд╕реЗ рдХрд┐ UITextField рдФрд░ UITextView ) рдореЗрдВ рдЗрдирдкреБрдЯ inputView рдФрд░ inputAccessoryView рдХреЗ рдЕрджреНрднреБрдд рдЧреБрдг рд╣реИрдВред

inputAccessoryView рдореЗрдВ рдкрдбрд╝рд╛ рджреГрд╢реНрдп рдХреАрдмреЛрд░реНрдб рдХреЗ рдКрдкрд░ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЬрдм рд╕реНрдХреНрд░реАрди рдкрд░ рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рд╣реЛрддрд╛ рд╣реИ)ред рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдмрдЯрди рдФрд░ / рдпрд╛ рдЗрдирдкреБрдЯ рдХреНрд╖реЗрддреНрд░ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдХреЗ рд╕рд╛рде рдПрдХ рдЯреВрд▓рдмрд╛рд░ рд╣реИред

рд▓реЗрдХрд┐рди inputView рдорд╛рдирдХ рдХреАрдмреЛрд░реНрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдпрджрд┐ рдЖрдк рдЗрд╕ рдкреНрд░реЙрдкрд░реНрдЯреА UIView рдХреНрд▓рд╛рд╕ рдХрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдЕрд╕рд╛рдЗрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЬрдм рдЯреЗрдХреНрд╕реНрдЯ рдлрд╝реАрд▓реНрдб firstResponder рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╡рд╣ рдХреАрдмреЛрд░реНрдб рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдЙрд╕реА UIView рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ inputView рдореЗрдВ inputView ред рдЗрд╕реЗ рдЙрд╕реА рд╕реНрдерд╛рди (рддрд▓, рд╣реЗрд╣реЗ) рдореЗрдВ рдФрд░ рдирд┐рдпрдорд┐рдд рдХреАрдмреЛрд░реНрдб рдХреЗ рд╕рдорд╛рди рдПрдирд┐рдореЗрд╢рди рдХреЗ рд╕рд╛рде рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, UIKeyboardWillShowNotification рдЬреИрд╕реА рд╕реВрдЪрдирд╛рдПрдВ рднреА рднреЗрдЬреА рдЬрд╛рдПрдВрдЧреА! рдареЛрд╕ рдкреНрд▓рд╕рд╕ред

рд▓реЗрдХрд┐рди рд╡рд┐рдкрдХреНрд╖ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рдореЗрд░реЗ рдкрд╛рд╕ рд╣реИред

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

рд╕рдмрд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рд╣реИред рд╣рдорд╛рд░рд╛ рдХреАрдмреЛрд░реНрдб рдмрд╕ рдЕрдкрдиреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЛ рдмрддрд╛рдПрдЧрд╛ рдХрд┐ рдХреМрди рд╕рд╛ рдмрдЯрди рджрдмрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдФрд░ рдмрдЯрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред рдФрд░ рдХреАрдмреЛрд░реНрдб рдХреЛ рд╣рд╛рд░реНрдбрдХреЛрдб рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛, рдФрд░ рдЗрд╕реЗ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рдПрдВ? рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХреНрдпреЛрдВ рдирд╣реАрдВ? рдЖрдЗрдП рдЗрд╕рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рд╕реНрд░реЛрдд рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред

рддреЛ, рд╣рдо рдПрдХ рд╡рд░реНрдЧ рдФрд░ рджреЛ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ: рдХреАрдмреЛрд░реНрдб, рдкреНрд░рддрд┐рдирд┐рдзрд┐, рдбреЗрдЯрд╛ рд╕реНрд░реЛрддред
 //KHKeyboard.h #import <UIKit/UIKit.h> #import "KHKeyboardDatasource.h" #import "KHKeyboardDelegate.h" @interface KHKeyboard : UIView @property (nonatomic, assign) id<KHKeyboardDatasource> datasource; @property (nonatomic, assign) id<KHKeyboardDelegate> delegate; @end //KHKeyboardDelegate.h #import <UIKit/UIKit.h> @class KHKeyboard; @protocol KHKeyboardDelegate <NSObject> @optional - (void)keyPressedInKeyboard:(KHKeyboard *)keyboard atIndex:(NSInteger)index; @end //KHKeyboardDatasource.h #import <UIKit/UIKit.h> @class KHKeyboard; @protocol KHKeyboardDatasource <NSObject> @required - (NSInteger)numberOfKeysInKeyboard:(KHKeyboard *)keyboard; - (UIButton *)buttonForKeyInKeyboard:(KHKeyboard *)keyboard atIndex:(NSInteger)index; @end 

рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реИ - рджрдмрд╛рдпрд╛ рдЧрдпрд╛ рдмрдЯрди рд╕реВрдЪрдХрд╛рдВрдХ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдбреЗрдЯрд╛рд╕реЛрд░реНрд╕ рдХреЛ рд╣рдорд╛рд░реЗ рдХреАрдмреЛрд░реНрдб рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдпрд╣ рдмрдЯрди рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ, рдФрд░ UIButton рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ (рд╕реНрд╡рдпрдВ рдмрдЯрди) рднреА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд▓реМрдЯреЗ рдмрдЯрди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛, frame рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЛ рд╕реЗрдЯ рдХрд░рдирд╛ рди рднреВрд▓реЗрдВ - рдпрд╣ рд╣рдорд╛рд░реЗ рджреГрд╢реНрдп рдкрд░ рдмрдЯрди рдХреА рд╕реНрдерд┐рддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред

рдкреНрд░рд╛рд░рдВрдн:
 self.rects = [NSArray arrayWithObjects: [NSValue valueWithCGRect:CGRectMake(0, 0, 64, 50)], [NSValue valueWithCGRect:CGRectMake(64, 0, 64, 50)], [NSValue valueWithCGRect:CGRectMake(128, 0, 64, 50)], [NSValue valueWithCGRect:CGRectMake(192, 0, 64, 50)], [NSValue valueWithCGRect:CGRectMake(256, 0, 64, 50)], [NSValue valueWithCGRect:CGRectMake(0, 50, 64, 50)], [NSValue valueWithCGRect:CGRectMake(64, 50, 64, 50)], [NSValue valueWithCGRect:CGRectMake(128, 50, 64, 50)], [NSValue valueWithCGRect:CGRectMake(192, 50, 64, 50)], [NSValue valueWithCGRect:CGRectMake(256, 50, 64, 50)], [NSValue valueWithCGRect:CGRectMake(0, 100, 64, 50)], [NSValue valueWithCGRect:CGRectMake(64, 100, 64, 50)], [NSValue valueWithCGRect:CGRectMake(128, 100, 64, 50)], [NSValue valueWithCGRect:CGRectMake(192, 100, 64, 50)], [NSValue valueWithCGRect:CGRectMake(256, 100, 64, 100)], [NSValue valueWithCGRect:CGRectMake(0, 150, 128, 50)], [NSValue valueWithCGRect:CGRectMake(128, 150, 64, 50)], [NSValue valueWithCGRect:CGRectMake(192, 150, 64, 50)], nil]; self.titles = [NSArray arrayWithObjects: @"7", @"8", @"9", @"├Ч", @"тЖР", @"4", @"5", @"6", @"├╖", @"%", @"1", @"2", @"3", @"+", @"тЖ╡", @"0", @".", @"тИТ", nil]; KHKeyboard *keyboard = [[[KHKeyboard alloc] init] autorelease]; keyboard.datasource = self; keyboard.delegate = self; self.textField.inputView = keyboard; 

рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд:
 - (NSInteger)numberOfKeysInKeyboard:(KHKeyboard *)keyboard { return [self.rects count]; } - (UIButton *)buttonForKeyInKeyboard:(KHKeyboard *)keyboard atIndex:(NSInteger)index { NSString *title = [self.titles objectAtIndex:index]; CGRect rect = [(NSValue *)[self.rects objectAtIndex:index] CGRectValue]; UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; button.frame = rect; [button setTitle:title forState:UIControlStateNormal]; [button setUserInteractionEnabled:NO]; [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; [button setTitleColor:[UIColor blackColor] forState:UIControlStateHighlighted]; [button setReversesTitleShadowWhenHighlighted:YES]; if (index == 14) { // return key [button setBackgroundImage:[UIImage imageNamed:@"button_normal_2.png"] forState:UIControlStateNormal]; [button setBackgroundImage:[UIImage imageNamed:@"button_highlighted_2.png"] forState:UIControlStateHighlighted]; } else if (index == 15) { // "0" key [button setBackgroundImage:[UIImage imageNamed:@"button_normal_1.png"] forState:UIControlStateNormal]; [button setBackgroundImage:[UIImage imageNamed:@"button_highlighted_1.png"] forState:UIControlStateHighlighted]; } else { [button setBackgroundImage:[UIImage imageNamed:@"button_normal.png"] forState:UIControlStateNormal]; [button setBackgroundImage:[UIImage imageNamed:@"button_highlighted.png"] forState:UIControlStateHighlighted]; } [button.titleLabel setFont:[UIFont boldSystemFontOfSize:16]]; return button; } 

рдФрд░ рдЕрдХреЗрд▓рд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐:
 - (void)keyPressedInKeyboard:(KHKeyboard *)keyboard atIndex:(NSInteger)index { if (index == 14) { // return key [self.textField resignFirstResponder]; } else if (index == 4) { // backspace key NSInteger length = [self.textField.text length]; if (length == 0) { return; } else { NSString *newValue = [self.textField.text substringToIndex:length - 1]; self.textField.text = newValue; } } else { NSString *value = [self.titles objectAtIndex:index]; NSMutableString *newValue = [NSMutableString stringWithFormat:@"%@%@", self.textField.text, value]; self.textField.text = newValue; } } 

рдкрд░рд┐рдгрд╛рдо рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЬреАрдердм рдкрд░ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдпрд╣, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдкреВрд░рд╛ рд╣реЛ рд╕рдХрддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдХреБрдЫ рдкреНрд░рд╢реНрди рд╢реЗрд╖ рд╣реИрдВред

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

рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдЖрдк рдХреАрдмреЛрд░реНрдб рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦрд┐рдд рдЕрдзрд┐рд╕реВрдЪрдирд╛рдУрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдпрд╣ рдордд рднреВрд▓реЛ рдХрд┐ рд╡реЗ рдХрд╣реАрдВ рдЧрд╛рдпрдм рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ)ред NSNotification рд╡рд░реНрдЧ рдХреА рдХрд┐рд╕реА object рдХреА object рдкреНрд░реЙрдкрд░реНрдЯреА рдореЗрдВ рд╡рд╣ рдирд┐рдпрдВрддреНрд░рдг рд╣реЛрдЧрд╛ рдЬрд┐рд╕реЗ рдХреАрдмреЛрд░реНрдб рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЗрд╕реЗ рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВ рдФрд░ рдмрд╛рдж рдореЗрдВ keyPressedInKeyboard:atIndex: рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ keyPressedInKeyboard:atIndex:

рдореИрдВ рдЗрд╕ рдХрд╛рдо рдореЗрдВ рд╕реБрдзрд╛рд░ рдФрд░ рдПрдХреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдЙрдкрдпреЛрдЧреА рдЗрдЪреНрдЫрд╛рдУрдВ рдФрд░ рд╕реБрдЭрд╛рд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрднрд╛рд░реА рд░рд╣реВрдВрдЧрд╛ред

Source: https://habr.com/ru/post/In139937/


All Articles