рдЖрдзреЗ рдШрдВрдЯреЗ рдореЗрдВ iOS рдХреЗ рд▓рд┐рдП "рд░реАрдбрд░" рдХреИрд╕реЗ рд▓рд┐рдЦреЗрдВ

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



рдПрдкреАрдЖрдИ рдХреЗ рдХрд╛рдордХрд╛рдЬ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдФрд░ рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕реНрдкреАрдб рд░реАрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдП, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВ рдХрдЯ рдХреЗ рддрд╣рдд рдмрддрд╛рдКрдВрдЧрд╛



рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?


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

рддрджрдиреБрд╕рд╛рд░, рд╡рд╛рдВрдЫрд┐рдд рдкрддреНрд░ рдХреА рд╕реНрдерд┐рддрд┐ рд╕рд░рд▓рддрдо рд╕реВрддреНрд░ рджреНрд╡рд╛рд░рд╛ рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ:
(([word length] + 6) / 4) - 1; 

рд╕реНрдерд┐рддрд┐ рдЬрд╛рдирдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рд╡рд┐рднрд┐рдиреНрди рд░рдВрдЧреЛрдВ рдореЗрдВ рдЕрдХреНрд╖рд░реЛрдВ рдХреЛ рд░рдВрдЧрдиреЗ рдХреЗ рд▓рд┐рдП NSAttributedString рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдореБрдЦреНрдп рд╢рдмреНрдж рдХреЗ рд▓рд┐рдП рдХрд╛рд▓рд╛ рдФрд░ рдЙрдЪреНрдЪрд╛рд░рдг рдЕрдХреНрд╖рд░ рдХреЗ рд▓рд┐рдП рд▓рд╛рд▓ред
рдЕрдм рдЖрдкрдХреЛ рд╡рд╛рдВрдЫрд┐рдд рдкрддреНрд░ рдХреЗ рдХреЗрдВрджреНрд░ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо iOS рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░ sizeWithFont: рдпрд╛ sizeWithAttributes: method рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд░реНрдгреЛрдВ рдХреА рдЪреМрдбрд╝рд╛рдИ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВред
рдЫреЛрдЯреА рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП, рдПрдХ UILabel рдмрдирд╛рдПрдВ, рдЗрд╕рдореЗрдВ рдПрдХ NSAttributedString рдбрд╛рд▓реЗрдВ рдФрд░ рд╕рдорд╛рди рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЪрдпрдирд┐рдд рдлрд╝реЙрдиреНрдЯ рдХреЗ рд▓рд┐рдП рдЧрдгрдирд╛ рдХреА рдЧрдИ рдЪреМрдбрд╝рд╛рдИ рдХреЗ рд╕рд╛рде рдлреНрд░реЗрдо рд╕реЗрдЯ рдХрд░реЗрдВред рдкрд░рд┐рдгрд╛рдореА UILabel рдФрд░ рдЙрдЪреНрдЪрд╛рд░рдг рдкрддреНрд░ рдХреЗ рдХреЗрдВрджреНрд░ рдХреА рд╕реНрдерд┐рддрд┐ RRTargetView рд╡рд░реНрдЧ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░ рджреА рдЬрд╛рддреА рд╣реИ, рдЬреЛ рд▓рдХреНрд╖реНрдп рдХреЛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдореЗрдВ рд▓рдЧреА рд╣реБрдИ рд╣реИ, рдЬреЛ рд╡рд╛рдВрдЫрд┐рдд рдкрддреНрд░ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреА рд╣реИ, рдФрд░ рдЗрд╕ рд▓рдХреНрд╖реНрдп рдХреЗ рднреАрддрд░ UILabel рдХреА рд╕реНрдерд┐рддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИред

рдЖрдкрдХрд╛ рдкрд╛рдардХ рд▓реЗрдЦрди


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

рдкрдврд╝рдирд╛ рд╢реБрд░реВ / рд░реЛрдХреЗрдВред
 - (void)startReading; - (void)pauseReading; 

рдирдХрд╛рд░рд╛рддреНрдордХ рдпрд╛ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдорд╛рди рдкреНрд░реЗрд╖рд┐рдд рдХрд░рдХреЗ рдкрдврд╝рдиреЗ рдХреА рдЧрддрд┐ рдмрджрд▓реЗрдВред рдЧрддрд┐ рдХреЛ рдкреНрд░рддрд┐ рдорд┐рдирдЯ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдорд╛рдкрд╛ рдЬрд╛рддрд╛ рд╣реИред
 - (void)changeSpeed:(int)speedModification; 

рд╡рд░реНрддрдорд╛рди рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдлрд╝реЙрдиреНрдЯ рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рдХреЛ рдирдХрд╛рд░рд╛рддреНрдордХ рдпрд╛ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдорд╛рди рднреА рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдереНрд░реЗрд╕рд╣реЛрд▓реНрдб 16 рд╕реЗ 100 рддрдХ рд╕реЗрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВред
 - (void)changeFont:(int)fontModification; 

рд╕рд╛рде рд╣реА рджреЛ рдЧреБрдг рдЬреЛ рдЖрд░рдЖрд░рд╡реНрдпреВрдХрдВрдЯреНрд░реЛрд▓рд░ рд╡рд░реНрдЧ рдХреЗ рдбреЗрд▓рд┐рдЧреЗрдЯ рдФрд░ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВред
 @property (nonatomic, weak) id <RRViewControllerDataSource> dataSource; @property (nonatomic, weak) id <RRViewControllerDelegate> delegate; 

рдЯрд╛рд░рдЧреЗрдЯ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдФрд░ рдЯреЗрдХреНрд╕реНрдЯ рдкреЛрдЬрд┐рд╢рдирд┐рдВрдЧ RIVTargetView рд╡рд╛рд░рд┐рд╕ рджреНрд╡рд╛рд░рд╛ UIView рдХреНрд▓рд╛рд╕ рдХреЛ рдХреА рдЬрд╛рддреА рд╣реИред рдХрдХреНрд╖рд╛ рдореЗрдВ рдПрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд┐рдзрд┐ рдФрд░ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рд╣реЛрддреА рд╣реИред
0.0 рд╕реЗ 1.0 рддрдХ рдХреА рд╕реАрдорд╛ рдореЗрдВ рдПрдХ рдмрд┐рдВрджреБ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рд▓рдХреНрд╖реНрдп рдкрд░ рдПрдХ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рдкрд╛рдпрджрд╛рди рдЦреАрдВрдЪреА рдЬрд╛рддреА рд╣реИ, рдкрд╛рда рдЗрд╕ рдмрд┐рдВрджреБ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╕реНрдерд┐рдд рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди 1/3 рд╣реИред
 @property (nonatomic) CGFloat horizontalAccentPosition; 

рд╡рд┐рдзрд┐ рдкрд╛рда рдХреЗ рд╕рд╛рде рдПрдХ UILabel рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреА рд╣реИред рдПрдХреНрд╕реЗрдВрдЯреЗрдВрдЯ рдкреЙрдЗрдВрдЯ рд╡рд╣ рдмрд┐рдВрджреБ рд╣реИ рдЬрд┐рд╕реЗ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рдкрд╛рдпрджрд╛рди рдХреЗ рд╕рд╛рде рд╕рдВрд░реЗрдЦрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
 - (void)positionLabel:(UILabel *)label withAccentPoint:(CGPoint)point; 

рдЫрд╡рд┐ рдЙрджрд╛рд╣рд░рдг


рджреЛ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рднреА рд╣реИрдВред
RRViewControllerDelegate рдкреНрд░реЛрдЯреЛрдХреЙрд▓

рджреЛрдиреЛрдВ рд╡рд┐рдзрд┐рдпрд╛рдВ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИрдВ, рдлрд╝реЙрдиреНрдЯ рдЖрдХрд╛рд░ рдФрд░ рдкрдврд╝рдиреЗ рдХреА рдЧрддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
 - (void)reportFontSize:(CGFloat)size; - (void)reportReadingSpeed:(NSUInteger)speed; 

RRViewControllerDataSource рдкреНрд░реЛрдЯреЛрдХреЙрд▓
рд╡реИрдХрд▓реНрдкрд┐рдХ рддрд░реАрдХреЗ:
 - (NSString *)longestWordWithFont:(UIFont *)font; 

рдкрд╛рда рдореЗрдВ рд╕рдмрд╕реЗ рд▓рдВрдмреЗ рд╢рдмреНрдж RRViewController рдХреЗ рд▓рд┐рдП рд╡рд┐рдзрд┐ рд╡рд╛рдкрд╕ рдЖрддреА рд╣реИ, рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдлрд╝реЙрдиреНрдЯ рдЖрдХрд╛рд░ рдЪрдпрди рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд╛рда рдЪрдпрди рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ [NSUserDefaults standardUserDefaults] рдореЗрдВ auto_text_size рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП рдмреВрд▓рд┐рдпрди рдорд╛рди YES рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
 - (NSString *)previousWord; 

рдкрд┐рдЫрд▓реЗ рд╢рдмреНрдж рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдзрд┐, рдпрджрд┐ рдЕрдкрд░рд┐рдЪрд┐рдд рд╢рдмреНрдж рдкрд╛рда рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЖрдк рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЙрд╕ рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рджреЛ рдЖрд╡рд╢реНрдпрдХ рддрд░реАрдХреЗ:
 - (NSString *)nextWord; 

RRViewController рдЕрдЧрд▓реЗ рд╢рдмреНрдж рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдкрд░ рд╕рд╡рд╛рд▓ рдЙрдард╛рддрд╛ рд╣реИред
 - (NSString *)currentWord; 

рд╡рд░реНрддрдорд╛рди рд╢рдмреНрдж рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдкрд╛рда рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝реЙрдиреНрдЯ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред




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



рдЕрдм рд╣рдо рдПрдкреАрдЖрдИ рдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рд╣рдо рдЬреАрдереВрдм рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рдкрд╛рда рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдореЗрдВ рд▓рдЧрд╛ рд░рд╣реЗрдЧрд╛ред

рд╕реНрдЯреЛрд░реАрдмреЛрд░реНрдб рдЦреЛрд▓реЗрдВ, рдЬрд╣рд╛рдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ UIViewController рдореМрдЬреВрдж рд╣реИред рдЗрд╕рдореЗрдВ рдПрдХ рдХрдВрдЯреЗрдирд░ рдЬреЛрдбрд╝реЗрдВ, рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд░рдЦрд╛ рдирд┐рдпрдВрддреНрд░рдХ рд╡рд░реНрдЧ рдХреЗ рд░реВрдк рдореЗрдВ, RRViewController рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред рд╣рдореЗрдВ рдкрд╛рда рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдФрд░ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрддреНрд╡реЛрдВ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред "рдкреНрд░рд╛рд░рдВрдн", "рд░реЛрдХреЗрдВ" рдмрдЯрди рдЬреЛрдбрд╝реЗрдВ, рдПрдХ рдЯреЗрдХреНрд╕реНрдЯ рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб UITextView, UIView, рдЬрд┐рд╕рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рд╕рдореВрд╣реАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдХреЛ рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛, рд╕рд╛рде рд╣реА UIScrollView рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдХрдВрдЯреЗрдирд░ рдФрд░ UIView рдХреЛ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд╕рд╛рде рд░рдЦреЗрдВрдЧреЗред рдЕрдм рд╣рдо рдЗрди рддрддреНрд╡реЛрдВ рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рд╣рдо рд╢реБрд░реВ рдФрд░ рдард╣рд░рд╛рд╡ рдмрдЯрди рдХреЗ рдХреНрд▓рд┐рдХ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП UItextView рдФрд░ UIScrollView рдХреЗ рд▓рд┐рдП рдПрдХ IBOutlet рдФрд░ рджреЛ IBAction рдмрдирд╛рддреЗ рд╣реИрдВред
 @property (weak, nonatomic) IBOutlet UITextView *textView; @property (weak, nonatomic) IBOutlet UIScrollView *scrollView; - (IBAction)startReading:(UIButton *)sender; - (IBAction)pauseReading:(UIButton *)sender; 


рд╕реНрдЯреЛрд░реАрдмреЛрд░реНрдб рджреЗрдЦреЗрдВ


рдкрджрд╛рдиреБрдХреНрд░рдо рджреЗрдЦреЗрдВ


рдпрд╣ RRViewController рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред
рдкрд╣рд▓реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред рдХрдВрдЯреЗрдирд░ рдмрдирд╛рддреЗ рд╕рдордп, рдПрдХ "рдПрдВрдмреЗрдб рд╕реАрдЧреНрдпреВ" рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕реЗ рдПрдХ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ InterfaceBuilder рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, RVCBecomesChildред рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд╕рдордп, рдХрдВрдЯреЗрдирд░ рдореЗрдВ RRViewController рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛрдЧрд╛рдлреЙрд░рд╕реЗрдЧ: рдкреНрд░реЗрд╖рдХ: рд╡рд┐рдзрд┐, рдЬрд┐рд╕реЗ рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдмрдирд╛рдПрдВ рдЬрд┐рд╕рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рд╕рдВрджрд░реНрдн рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:
 @property (weak, nonatomic) RRViewController *readingVC; 

рдЕрдм рд╣рдо рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ:
 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([segue.identifier isEqualToString:@"RVCBecomesChild"]) { self.readingVC = segue.destinationViewController; } } 

рдирд┐рдпрдВрддреНрд░рдХ рдХрд╛ рдПрдХ рд▓рд┐рдВрдХ рд╣реИред рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реИ?
рдФрд░ рдлрд┐рд░ рдЖрдкрдХреЛ RRViewControllerDataSource рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ RRViewController рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
 - (NSString *)nextWord; - (NSString *)currentWord; 

рдкрд╣рд▓реА рдЪреАрдЬ рдЬреЛ рд╣рдореЗрдВ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ, рд╡рд╣ рд╣реИ рдЖрд░рдЖрд░рдПрд╡реАрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЛ рдмрддрд╛рдПрдВ рдХрд┐ рд╣рдо рдЙрд╕рдХреЗ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рд╣реИрдВред
 - (void)viewDidLoad { [super viewDidLoad]; self.readingVC.dataSource = self; } 


рд╕рдВрдХрд▓рдХ рдХреЛ рдпрд╣ рдмрддрд╛рдирд╛ рди рднреВрд▓реЗрдВ рдХрд┐ рд╣рдо рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ:
 @interface SFRViewController () <RRViewControllerDataSource> 

рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рддрд╛рдХрд┐ рдХрдВрдкрд╛рдЗрд▓рд░ self.readingVC.dataSource = self рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░рддреЗ рд╕рдордп рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рди рджреЗ, рдФрд░ рдпрд╣ рднреА рдХрд┐ рд╣рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рдорд┐рд▓реЗ рдпрджрд┐ @required рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рд╕рднреА рддрд░реАрдХреЗ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рдереЗред

рд╣рдо UITextView рдлрд╝реАрд▓реНрдб рд╕реЗ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рда рд▓реЗрдВрдЧреЗ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╣рдореЗрдВ рдПрдХ рдЪрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдЬреЛ рдкрд╛рда рдореЗрдВ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ред
 @property (nonatomic) NSUInteger currentWord; - (NSString *)nextWord { self.textPosition++; NSArray *words = [self.textView.text componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; if (self.textPosition >= [words count]) { self.textPosition = 0; } return [words objectAtIndex:self.textPosition]; } - (NSString *)currentWord { NSArray *words = [self.textView.text componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; if (self.textPosition >= [words count]) { self.textPosition = 0; } return [words objectAtIndex:self.textPosition]; } 


рд╕рдмрд╕реЗ рдЙрдЪрд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирд╣реАрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рд╢рдмреНрдж рдХреЛ рдХреНрд╡реЗрд░реА рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдкреВрд░реЗ рдкрд╛рда рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╣реИрдВ, рдкрд╛рда рдХреЛ рдмрджрд▓рддреЗ рд╕рдордп рдПрдХ рдмрд╛рд░ рдРрд╕рд╛ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдПрдХ рдЪрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕реЗ рдХрд┐рд╕ рд╡рд┐рдзрд┐ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВ рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж рд▓рд┐рдЦреВрдВрдЧрд╛ред
рдЕрдм рд╣рдо рдмрдЯрди рдХреЗ рд▓рд┐рдП рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдпрд╣ RRViewController рд╡рд░реНрдЧ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдЧрд╛ред
 - (IBAction)startReading:(UIButton *)sender { [self.readingVC startReading]; } - (IBAction)pauseReading:(UIButton *)sender { [self.readingVC pauseReading]; } 

рд╣реЛ рдЧрдпрд╛ред рдЖрдк рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдЖрдирдВрдж рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╣ рдмрдЧ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ


рдЖрдк рддреБрд░рдВрдд рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЧрддрд┐ рдХрд╛рдлреА рдзреАрдореА рд╣реИ, рдФрд░ рдлрд╝реЙрдиреНрдЯ рдЫреЛрдЯрд╛ рд╣реИред рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдмрд╣реБрдд рдЖрд╕рд╛рдиреА рд╕реЗ рд╣рд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИред RRViewController рддрд░реАрдХреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдмрдЯрди рдмрдирд╛рдПрдБред рд╡рд┐рдзрд┐ рдХреЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ, рдирдХрд╛рд░рд╛рддреНрдордХ рдпрд╛ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкреВрд░реНрдгрд╛рдВрдХ рдкрд╛рд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдЬреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЗрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдХрд┐рддрдирд╛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред
 - (void)changeSpeed:(int)speedModification; - (void)changeFont:(int)fontModification; 

рдЗрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЖрдкрдХреЗ рд╡рд┐рд╡реЗрдХ рдкрд░ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рд╣рдо рдПрдХ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░реЗрдВрдЧреЗред

рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ, рдЬрдм рдЖрдк рдкрд╛рда рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреАрдмреЛрд░реНрдб рдЗрдирдкреБрдЯ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдУрд╡рд░рд▓реИрдк рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЬрдм рдЖрдк Enter рджрдмрд╛рддреЗ рд╣реИрдВ рддреЛ рдХреАрдмреЛрд░реНрдб рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, (рдЬреЛ рдЖрдо рддреМрд░ рдкрд░ рд╕рд╣реА рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ UITextView рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд╣реБ-рдкрдВрдХреНрддрд┐ рдкрд╛рда рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ Enter рдХреБрдВрдЬреА рдХреЛ рджрдмрд╛рдиреЗ рд╕реЗ рдкрд╛рда рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рд╡рд┐рд░рд╛рдо рд╡рд░реНрдг рд╕рдореНрдорд┐рд▓рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ)ред
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдкрд╛рда рдХреНрд╖реЗрддреНрд░ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрд╕реЗ рдмрддрд╛рдПрдВ рдХрд┐ рд╣рдорд╛рд░рд╛ ViewController рд╡рд░реНрдЧ UITextView рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рд╕реМрджрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред
 @interface SFRViewController () <RRViewControllerDataSource, UITextViewDelegate> 

рд╣рдореЗрдВ рдХреАрдмреЛрд░реНрдб рд╕реЗ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдЗрд╕рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рдХреЗ рд╕рд╛рде, рд╣рдореЗрдВ рдПрдХ рд╢рдмреНрджрдХреЛрд╖ рдорд┐рд▓реЗрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдЗрд╕рдХреЗ рд╡рд░реНрддрдорд╛рди рдЖрдХрд╛рд░ рд╣реЛрдВрдЧреЗ, рдЬрд┐рд╕реЗ рд╣рдореЗрдВ UIScrollView рдСрдлрд╕реЗрдЯ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
 - (void)viewDidLoad { [super viewDidLoad]; self.readingVC.dataSource = self; self.textView.delegate = self; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWasShown:) name:UIKeyboardWillShowNotification object:nil]; } 

рдЕрдЧрд▓рд╛, рд╣рдо рдЙрди рджреЛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдирдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╡рд╣ рд╡рд┐рдзрд┐ рдЬрд┐рд╕реЗ рдХреАрдмреЛрд░реНрдб рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рдкрд░ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛:
 - (void)keyboardWasShown:(NSNotification *)notification { CGSize keyboardSize = [[[notification userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size; [self.scrollView setContentInset:UIEdgeInsetsMake(-keyboardSize.height, 0, 0, 0)]; } 

рдЕрдм рд╣рдо рдкрд╛рда рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрджрд┐ рд▓рд╛рдЗрди рдмреНрд░реЗрдХ рд╡рд░реНрдг "\ n" рдбрд╛рд▓рд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдХреАрдмреЛрд░реНрдб рдХреЛ рд╣рдЯрд╛ рджреЗрдВ рдФрд░ UIScrollView рдХреЗ рд▓рд┐рдП рд▓рдВрдмрд╡рдд рдСрдлрд╕реЗрдЯ рдХреЛ рд╣рдЯрд╛ рджреЗрдВред рд╡реИрд╕реЗ, рдПрдХ рд╣реА рд╡рд┐рдзрд┐ рдореЗрдВ, рдЖрдк рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдкрд╛рда рдмрджрд▓рддреЗ рд╕рдордп рдЗрд╕реЗ рдПрдХ рдмрд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред
 - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text { if ([text isEqualToString:@"\n"]) { [textView resignFirstResponder]; } return YES; } 


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

рдЕрдВрддрднрд╛рд╖рдг


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

рдЕрдЪреНрдЫрд╛ рдкрдврд╝ рд▓реЛ!

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


All Articles