標籤:
轉自:http://www.cnblogs.com/xinus/archive/2013/01/22/ios-keybord-notification.html
- 註冊監聽鍵盤事件的通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardShow:) name:UIKeyboardDidShowNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardHide:) name:UIKeyboardDidHideNotification object:nil];
- 在鍵盤將要出現和隱藏的回調中,加入動畫。
- (void)keyboardWillShow:(NSNotification *)notif { if (self.hidden == YES) { return; } CGRect rect = [[notif.userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue]; CGFloat y = rect.origin.y; [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:0.25]; NSArray *subviews = [self subviews]; for (UIView *sub in subviews) { CGFloat maxY = CGRectGetMaxY(sub.frame); if (maxY > y - 2) { sub.center = CGPointMake(CGRectGetWidth(self.frame)/2.0, sub.center.y - maxY + y - 2); } } [UIView commitAnimations];}- (void)keyboardShow:(NSNotification *)notif { if (self.hidden == YES) { return; }}- (void)keyboardWillHide:(NSNotification *)notif { if (self.hidden == YES) { return; } [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:0.25]; NSArray *subviews = [self subviews]; for (UIView *sub in subviews) { if (sub.center.y < CGRectGetHeight(self.frame)/2.0) { sub.center = CGPointMake(CGRectGetWidth(self.frame)/2.0, CGRectGetHeight(self.frame)/2.0); } } [UIView commitAnimations];}- (void)keyboardHide:(NSNotification *)notif { if (self.hidden == YES) { return; }}
iOS全域處理鍵盤事件