β (void) viewWillAppear:(BOOL)paramAnimated{
[super viewWillAppear: paramAnimated];
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
[center addObserver: self selector:@selector(handleKeyboardWillShow:)
name: UIKeyboardWillShowNotification object: nil];
[center addObserver: self selector:@selector(handleKeyboardWillHide:)
name: UIKeyboardWillHideNotification object: nil];
}
β (void)viewWillDisappear:(BOOL)paramAnimated{
[super viewWillDisappear: paramAnimated];
[[NSNotificationCenter defaultCenter] removeObserver: self];
}
ΠΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ Π΄ΠΎΠΏΡΡΠΊΠ°ΡΡ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΡ ΠΎΡΠΈΠ±ΠΊΡ: ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ ΡΠ»ΡΡΠ°ΡΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ Π²ΠΈΠ΄Π° Π½Π΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ Π½Π° ΡΠΊΡΠ°Π½Π΅. ΠΠ½ΠΈ Π½Π°ΡΠΈΠ½Π°ΡΡ ΡΠ»ΡΡΠ°ΡΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ Π² ΠΌΠ΅ΡΠΎΠ΄Π΅ viewDidLoad, Π° ΡΠ΄Π°Π»ΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π²ΡΠΈΠ΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π½Π°Π±Π»ΡΠ΄Π°ΡΠ΅Π»Π΅ΠΉ, ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΌΠ΅ΡΠΎΠ΄Π΅ dealloc. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΡΠΈΡΠ΅Π½, ΡΠ°ΠΊ ΠΊΠ°ΠΊ, ΠΊΠΎΠ³Π΄Π° Π½Π°Ρ Π²ΠΈΠ΄ Π½Π΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ Π½Π° ΡΠΊΡΠ°Π½Π΅, Π° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ° Π²Π½ΠΎΠ²Ρ ΠΎΡΠΊΡΡΠ²Π°Π΅ΡΡΡ Π² ΠΊΠ°ΠΊΠΎΠΌ-ΡΠΎ Π΄ΡΡΠ³ΠΎΠΌ Π²ΠΈΠ΄Π΅, Π²Ρ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ Π΄ΡΡΠ³ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° Π²ΠΈΠ΄Π°. Π£ΡΡΠΈΡΠ΅, ΡΡΠΎ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ, ΠΊΠ°ΠΊ ΠΈ Π»ΡΠ±ΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅, ΡΠΈΡΠΎΠΊΠΎΠ²Π΅ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π²ΡΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ-Π½Π°Π±Π»ΡΠ΄Π°ΡΠ΅Π»ΡΠΌ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΎΡΡΠΎΠΌΡ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΌΠ΅ΡΡ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°Π»Π° Π½Π΅ Π½Π° Π²ΡΠ΅ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ. ΠΡΠ»ΠΈ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ ΠΏΠΎΡΡΡΠΏΠ°ΡΡ ΠΎΡ Π²ΠΈΠ΄Π°, Π½Π΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌΠΎΠ³ΠΎ Π½Π° ΡΠΊΡΠ°Π½Π΅ Π² Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ, ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡΡΡ.
Π ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ΅ ΠΊΠΎΠ΄Π° ΠΌΡ Π½Π°ΡΠ°Π»ΠΈ ΡΠ»ΡΡΠ°ΡΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ ΡΠΈΠΏΠ° Β«ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ° Π±ΡΠ΄Π΅Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½Π°Β» Π² ΠΌΠ΅ΡΠΎΠ΄Π΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° handleKeyboardWillShow: ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° Π½Π°ΡΠ΅Π³ΠΎ Π²ΠΈΠ΄Π°. Π£Π²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ ΡΠΈΠΏΠ° Β«ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ° Π±ΡΠ΄Π΅Ρ ΡΠΊΡΡΡΠ°Β» ΠΌΡ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌ Π² ΠΌΠ΅ΡΠΎΠ΄Π΅ handleKeyboardWillHide:. ΠΠΎΠΊΠ° ΡΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ Π΅ΡΠ΅ Π½Π΅ Π½Π°ΠΏΠΈΡΠ°Π½Ρ. ΠΠ°ΡΠ½Π΅ΠΌ Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°, handleKeyboardWillShow:. Π ΡΡΠΎΠΌ ΠΌΠ΅ΡΠΎΠ΄Π΅ Π½Π°ΠΌ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π²ΡΡΠΎΡΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ, Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π²ΡΠΈΡΡ ΠΊΠ»ΡΡΠΎΠΌ UIKeyboardFrameEndUserInfoKey ΠΈΠ· ΡΠ»ΠΎΠ²Π°ΡΡ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ, ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°ΡΡΠ΅Π³ΠΎ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅. ΠΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ, ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π²ΠΈΠ΄Π° Π²Π²Π΅ΡΡ β ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ Π²ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΎΠΊΠ°Π·Π°Π»ΠΈΡΡ Π½Π°Π΄ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠΎΠΉ. ΠΠ΄Π΅ΡΡ ΠΏΡΠΈΡΡΠ½ΠΎ Π²ΡΠΏΠΎΠΌΠ½ΠΈΡΡ, ΡΡΠΎ ΠΌΡ ΠΏΠΎΠΌΠ΅ΡΡΠΈΠ»ΠΈ Π²ΡΠ΅ Π½ΡΠΆΠ½ΠΎΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π² ΠΏΡΠΎΠΊΡΡΡΠΈΠ²Π°ΡΡΠ΅ΠΌΡΡ Π²ΠΈΠ΄Π΅. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ ΠΎΡΠΊΠΎΡΡΠ΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΡΠ°Π΅Π²ΡΠ΅ ΠΎΡΡΡΡΠΏΡ ΠΏΡΠΎΠΊΡΡΡΠΈΠ²Π°ΡΡΠ΅Π³ΠΎΡΡ Π²ΠΈΠ΄Π°:
β (void) handleKeyboardWillShow:(NSNotification *)paramNotification{
NSDictionary *userInfo = paramNotification.userInfo;
/* ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ½ΠΎΠΉ Π°Π½ΠΈΠΌΠ°ΡΠΈΠΈ β Π²ΡΠ΅ΠΌΡ, Π·Π° ΠΊΠΎΡΠΎΡΠΎΠ΅
ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ° ΡΡΠΏΠ΅Π΅Ρ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡΡΡ Π½Π° ΡΠΊΡΠ°Π½Π΅. ΠΡΠΈ Π°Π½ΠΈΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠΈ
ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΡΠ°ΠΊΠΎΠ΅ ΠΆΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
*/
NSValue *animationDurationObject =
userInfo[UIKeyboardAnimationDurationUserInfoKey];
NSValue *keyboardEndRectObject = userInfo[UIKeyboardFrameEndUserInfoKey];
double animationDuration = 0.0;
CGRect keyboardEndRect = CGRectMake(0.0f, 0.0f, 0.0f, 0.0f);
[animationDurationObject getValue:&animationDuration];
[keyboardEndRectObject getValue:&keyboardEndRect];
UIWindow *window = [UIApplication sharedApplication].keyWindow;
/* ΠΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΠΌ ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΊΠΎΠ½ΡΡΡΠ° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ ΠΈΠ· ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΎΠΊΠ½Π°
Π² ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ Π½Π°ΡΠ΅Π³ΠΎ Π²ΠΈΠ΄Π°. */
keyboardEndRect = [self.view convertRect: keyboardEndRect
fromView: window];
/* ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ, Π² ΠΊΠ°ΠΊΠΎΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ Π½Π°Ρ Π²ΠΈΠ΄ Π½Π°ΠΊΡΡΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠΎΠΉ */
CGRect intersectionOfKeyboardRectAndWindowRect =
CGRectIntersection(self.view.frame, keyboardEndRect);
/* ΠΡΠΎΠΊΡΡΡΠΈΠ²Π°Π΅ΠΌ ΠΏΡΠΎΠΊΡΡΡΠΈΠ²Π°ΡΡΠΈΠΉΡΡ Π²ΠΈΠ΄ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅
Π½Π°ΡΠ΅Π³ΠΎ Π²ΠΈΠ΄Π° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π»ΠΎΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ */
[UIView animateWithDuration: animationDuration animations: ^{
self.scrollView.contentInset =
UIEdgeInsetsMake(0.0f,
0.0f,
intersectionOfKeyboardRectAndWindowRect.size.height,
0.0f);
[self.scrollView scrollRectToVisible: self.textField.frame animated: NO];
}];
}
Π£ Π½Π°Ρ ΠΏΠΎΠ»ΡΡΠΈΠ»ΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΉ ΠΈ ΠΏΡΡΠΌΠΎΠ»ΠΈΠ½Π΅ΠΉΠ½ΡΠΉ ΠΊΠΎΠ΄. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½Π°Ρ Π΄Π΅ΡΠ°Π»Ρ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ΅Π±ΡΡΡΠ°Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ°Π·ΡΡΡΠ½Π΅Π½ΠΈΡ, β ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ CGRectIntersection. Π Π½Π΅ΠΉ ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΎΠΌ ΠΊΠΎΠ½ΡΡΡΠ΅ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ (ΠΎ Π²Π΅ΡΡ Π½Π΅ΠΉ Π³ΡΠ°Π½ΠΈΡΠ΅, Π»Π΅Π²ΠΎΠΉ Π³ΡΠ°Π½ΠΈΡΠ΅, ΡΠΈΡΠΈΠ½Π΅ ΠΈ Π²ΡΡΠΎΡΠ΅). ΠΡΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ Π² ΠΌΠΎΠΌΠ΅Π½Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π°Π½ΠΈΠΌΠ°ΡΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½Π° ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡΡ Π½Π° ΡΠΊΡΠ°Π½Π΅. Π’Π΅ΠΏΠ΅ΡΡ, Π·Π½Π°Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ, ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ CGRectIntersection ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΠΊΠ°ΠΊΠ°Ρ ΡΠ°ΡΡΡ Π½Π°ΡΠ΅Π³ΠΎ Π²ΠΈΠ΄Π° Π½Π°ΠΊΡΡΡΠ° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠΎΠΉ. ΠΡΠ°ΠΊ, Π±Π΅ΡΠ΅ΠΌ ΠΊΠΎΠ½ΡΡΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ, ΠΊΠΎΠ½ΡΡΡ Π²ΠΈΠ΄Π°, Π° Π·Π°ΡΠ΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ, ΠΊΠ°ΠΊΠ°Ρ ΡΠ°ΡΡΡ ΠΊΠΎΠ½ΡΡΡΠ° Π²ΠΈΠ΄Π° Π½Π°ΠΊΡΡΡΠ° ΠΊΠΎΠ½ΡΡΡΠΎΠΌ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΡΡΡΠΊΡΡΡΡ ΡΠΈΠΏΠ° CGRect, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ ΡΠΎΠΉ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄Π°, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π°ΠΊΡΡΡΠ° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠΎΠΉ. ΠΠ·Π²Π΅ΡΡΠ½ΠΎ, ΡΡΠΎ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ° ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π° Π½ΠΈΠΆΠ½Π΅ΠΉ Π³ΡΠ°Π½ΠΈΡΠ΅ ΡΠΊΡΠ°Π½Π° ΠΈ Π² Ρ ΠΎΠ΄Π΅ Π°Π½ΠΈΠΌΠ°ΡΠΈΠΈ Π²ΡΠΏΠ»ΡΠ²Π°Π΅Ρ Π²Π²Π΅ΡΡ . ΠΠΎΡΡΠΎΠΌΡ Π½Π°Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ΅Ρ Π²Π΅ΡΡΠΈΠΊΠ°Π»Ρ ΡΡΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ. ΠΡΠ°ΠΊ, ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π²ΡΡΠΎΡΡ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΡΠ° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ ΠΈ ΠΊΠΎΠ½ΡΡΡΠ° Π²ΠΈΠ΄Π°, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Π΅ΠΌ Π½Π° ΡΡΡ Π²ΡΡΠΎΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π²ΠΈΠ΄Π°. ΠΠ»ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π°Π½ΠΈΠΌΠ°ΡΠΈΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Π΅ΠΌ ΡΠ°Π²Π½ΠΎΠΉ Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π°Π½ΠΈΠΌΠ°ΡΠΈΠΈ Π²ΡΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ ΠΈ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°ΡΡΠΈΡ ΡΡ ΡΠΊΡΠ°Π½Π½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΡΡΡΡΡ.
ΠΠ°Π»Π΅Π΅ Π½ΡΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ handleKeyboardWillHide:. Π Π½Π΅ΠΌ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΡΠΊΡΡΠ²Π°ΡΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ β ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΠΎΠ½Π° Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΊΡΡΠ²Π°ΡΡ Π½Π°Ρ Π²ΠΈΠ΄. ΠΡΠ°ΠΊ, Π² ΡΡΠΎΠΌ ΠΌΠ΅ΡΠΎΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠ±ΡΠΎΡΠΈΡΡ ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΊΡΠ°Π΅Π²ΡΡ ΠΎΡΡΡΡΠΏΠΎΠ² ΠΏΡΠΎΠΊΡΡΡΠΈΠ²Π°ΡΡΠ΅Π³ΠΎΡΡ Π²ΠΈΠ΄Π° ΠΊ Π½Π°ΡΠ°Π»ΡΠ½ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ, ΠΏΠ΅ΡΠ΅Π½Π΅ΡΡΠΈ Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π²Π½ΠΈΠ·, ΡΡΠΎΠ±Ρ Π²ΠΈΠ΄ Π²ΡΠ³Π»ΡΠ΄Π΅Π» ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π±ΡΠ»ΠΎ Π΄ΠΎ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ:
β (void) handleKeyboardWillHide:(NSNotification *)paramSender{
NSDictionary *userInfo = [paramSender userInfo];
NSValue *animationDurationObject =
[userInfo valueForKey: UIKeyboardAnimationDurationUserInfoKey];
double animationDuration = 0.0;
[animationDurationObject getValue:&animationDuration];
[UIView animateWithDuration: animationDuration animations: ^{
self.scrollView.contentInset = UIEdgeInsetsZero;
}];
}
Π ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π²Π°ΠΆΠ½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π½Π°Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ Π²ΠΈΠ΄Π° ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄Π΅Π»Π΅Π³Π°ΡΠΎΠΌ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΡΡ ΠΎΠ΄ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ Ρ ΡΠΊΡΠ°Π½Π°, Π΅ΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ ΠΊΠ»Π°Π²ΠΈΡΡ Return (ΠΠ²ΠΎΠ΄) ΠΏΠΎΡΠ»Π΅ Π²Π²ΠΎΠ΄Π° ΡΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π² ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅:
β (BOOL) textFieldShouldReturn:(UITextField *)paramTextField{
[paramTextField resignFirstResponder];
return YES;
}
Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅
Π Π°Π·Π΄Π΅Π»Ρ 1.19 ΠΈ 1.20.
15.4. ΠΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ
ΠΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ
ΠΡ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΎΠΏΠ΅ΡΠΈΡΡΡΡΠ΅Π΅ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ-Π±ΡΠ΄ΠΈΠ»ΡΠ½ΠΈΠΊ ΠΈΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ-ΠΊΠ°Π»Π΅Π½Π΄Π°ΡΡ. ΠΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΠ½ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎ ΡΠΎΠ±ΡΡΠΈΠΈ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π² Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΡΠΎΠ½ΠΎΠ²ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΈΠ»ΠΈ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ Π·Π°ΠΏΡΡΠ΅Π½ΠΎ.
Π Π΅ΡΠ΅Π½ΠΈΠ΅
ΠΠ½ΡΡΠ°Π½ΡΠΈΡΡΠΉΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΈΠΏΠ° UILocalNotification, ΡΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΠΉΡΠ΅ Π΅Π³ΠΎ (Π΄Π°Π»Π΅Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΡΠΊΠ°Π·Π°Π½ΠΎ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ) ΠΈ Π·Π°ΠΏΠ»Π°Π½ΠΈΡΡΠΉΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° scheduleLocalNotification:, ΠΎΡΠ½ΠΎΡΡΡΠ΅Π³ΠΎΡΡ ΠΊ ΠΊΠ»Π°ΡΡΡ UIApplication. Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ° sharedApplication, ΠΎΡΠ½ΠΎΡΡΡΠΈΠΌΡΡ ΠΊ ΠΊΠ»Π°ΡΡΡ UIApplication.
ΠΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅
ΠΡΠ»ΠΈ Π² Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΡΠΎΠ½ΠΎΠ²ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΈΠ»ΠΈ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π²ΠΎΠΎΠ±ΡΠ΅, ΡΠΈΡΡΠ΅ΠΌΠ° Π²ΡΠ΄Π°Π΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠΎΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅. Π§ΡΠΎΠ±Ρ Π·Π°ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°ΡΡ Π΄ΠΎΡΡΠ°Π²ΠΊΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° scheduleLocalNotification:, ΠΎΡΠ½ΠΎΡΡΡΠΈΠΉΡΡ ΠΊ ΠΊΠ»Π°ΡΡΡ UIApplication. ΠΡΠ»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΈ Π² ΡΡΠΎ Π²ΡΠ΅ΠΌΡ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Π·Π°ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π΅ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΎΠΏΠΎΠ²Π΅ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΡΡΠΎΠΌ. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ iOS Π±Π΅ΡΡΡΠΌΠ½ΠΎ Π΄Π°Π΅Ρ Π²Π°ΠΌ Π·Π½Π°ΡΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π±ΡΠ»ΠΎ Π²ΡΠ΄Π°Π½ΠΎ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅, β ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ ΡΠ΅ΡΠ΅Π· Π΄Π΅Π»Π΅Π³Π°Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΎΠΊΠ° Π½Π΅ Π±ΡΠ΄Π΅ΠΌ Π²Π΄Π°Π²Π°ΡΡΡΡ Π² Π΄Π΅ΡΠ°Π»ΠΈ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°, ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π΅Π³ΠΎ ΡΡΡΡ ΠΏΠΎΠ·ΠΆΠ΅.
ΠΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΊΠ°Π·Π°ΡΡ iOS Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡΠ΄Ρ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ, ΠΊΠΎΠ³Π΄Π° Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π°ΠΆΠ΅ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠ°ΠΊΠΈΠ΅ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ ΠΊΠ°ΠΆΠ΄ΡΡ Π½Π΅Π΄Π΅Π»Ρ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ. ΠΡΠΈ ΡΡΠΎΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π΄Π°ΡΡ Π·Π°ΠΏΡΡΠΊΠ° (Fire Date) Π²Π°ΡΠΈΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ.
ΠΠ΅ΡΠΎΠ΄ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° cancelAllLocalNotifications ΠΎΡΠΌΠ΅Π½ΡΠ΅Ρ Π΄ΠΎΡΡΠ°Π²ΠΊΡ Π²ΡΠ΅Ρ ΡΡΠΎΡΡΠΈΡ Π² ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ, ΠΏΠΎΡΡΡΠΏΠΈΠ²ΡΠΈΡ ΠΎΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
Π£Π²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° UILocalNotification ΠΈΠΌΠ΅Π΅Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ²ΠΎΠΉΡΡΠ². ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΡΠΌΠΈ ΠΈΠ· Π½ΠΈΡ ΡΠ²Π»ΡΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅:
β’ fireDate β ΡΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΡΠΈΠΏΠ° NSDate, ΡΠΎΠΎΠ±ΡΠ°ΡΡΠ΅Π΅ iOS, ΠΊΠΎΠ³Π΄Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π·Π°ΠΏΡΡΠ΅Π½ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ. ΠΠ°Π½Π½ΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΌ;
β’ timeZone β ΡΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΡΠΈΠΏΠ° NSTimeZone ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ iOS, ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡ ΡΠ°ΡΠΎΠ²ΠΎΠΌΡ ΠΏΠΎΡΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Π°Ρ Π΄Π°ΡΠ° Π·Π°ΠΏΡΡΠΊΠ°. ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° timeZone, ΠΎΡΠ½ΠΎΡΡΡΠΈΠΉΡΡ ΠΊ ΠΊΠ»Π°ΡΡΡ NSCalendar. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΊΠ°Π»Π΅Π½Π΄Π°ΡΡ, Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π²ΡΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ° currentCalendar, ΠΎΡΠ½ΠΎΡΡΡΠΈΠΌΡΡ ΠΊ Π²ΡΡΠ΅ΡΠΏΠΎΠΌΡΠ½ΡΡΠΎΠΌΡ ΠΊΠ»Π°ΡΡΡ;