Revision: 23138
Updated Code
at August 31, 2010 22:37 by habib123
Updated Code
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
- (void)keyboardWillShow:(NSNotification *)notification
{
UIScrollView *scrollView = (UIScrollView *)self.view;
CGRect bounds = [[[notification userInfo] objectForKey:UIKeyboardBoundsUserInfoKey] CGRectValue];
CGPoint center = [[[notification userInfo] objectForKey:UIKeyboardCenterEndUserInfoKey] CGPointValue];
// We need to compute the keyboard and table view frames in window-relative coordinates
CGRect keyboardFrame = CGRectMake(round(center.x - bounds.size.width/2.0), round(center.y - bounds.size.height/2.0), bounds.size.width, bounds.size.height);
CGRect viewFrame = [scrollView.window convertRect:scrollView.frame fromView:scrollView.superview];
// And then figure out where they overlap
CGRect intersectionFrame = CGRectIntersection(viewFrame, keyboardFrame);
// This assumes that no one else cares about the table view's insets...
UIEdgeInsets insets = UIEdgeInsetsMake(0, 0, intersectionFrame.size.height, 0);
[scrollView setContentInset:insets];
[scrollView setScrollIndicatorInsets:insets];
[scrollView flashScrollIndicators];
}
- (void)keyboardWillHide:(NSNotification *)notification
{
UIScrollView *scrollView = (UIScrollView *)self.view;
// This assumes that no one else cares about the table view's insets...
[scrollView setContentInset:UIEdgeInsetsZero];
[scrollView setScrollIndicatorInsets:UIEdgeInsetsZero];
}
//For iPad
- (void)keyboardWillMove:(NSNotification *)note {
NSDictionary *info = [note userInfo];
CGRect kbBeginFrame = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue];
CGRect kbEndFrame = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
kbBeginFrame = [self.view convertRect:kbBeginFrame fromView:nil];
kbEndFrame = [self.view convertRect:kbEndFrame fromView:nil];
double animationDuration = [[info objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue];
UIViewAnimationCurve animationCurve = (UIViewAnimationCurve)[[info objectForKey:UIKeyboardAnimationCurveUserInfoKey] intValue];
[UIView beginAnimations:@"OAKeyboardAnimation" context:nil];
[UIView setAnimationCurve:animationCurve];
[UIView setAnimationDuration:animationDuration];
CGFloat kbYDelta = kbEndFrame.origin.y - kbBeginFrame.origin.y;
CGFloat x = leftButton.center.x;
leftButton.center = CGPointMake(x, leftButton.center.y + kbYDelta);
middleButton.center = CGPointMake(x, middleButton.center.y + kbYDelta);
rightButton.center = CGPointMake(x, rightButton.center.y + kbYDelta);
[UIView commitAnimations];
}
Revision: 23137
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at January 31, 2010 03:50 by habib123
Initial Code
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
- (void)keyboardWillShow:(NSNotification *)notification
{
UIScrollView *scrollView = (UIScrollView *)self.view;
CGRect bounds = [[[notification userInfo] objectForKey:UIKeyboardBoundsUserInfoKey] CGRectValue];
CGPoint center = [[[notification userInfo] objectForKey:UIKeyboardCenterEndUserInfoKey] CGPointValue];
// We need to compute the keyboard and table view frames in window-relative coordinates
CGRect keyboardFrame = CGRectMake(round(center.x - bounds.size.width/2.0), round(center.y - bounds.size.height/2.0), bounds.size.width, bounds.size.height);
CGRect viewFrame = [scrollView.window convertRect:scrollView.frame fromView:scrollView.superview];
// And then figure out where they overlap
CGRect intersectionFrame = CGRectIntersection(viewFrame, keyboardFrame);
// This assumes that no one else cares about the table view's insets...
UIEdgeInsets insets = UIEdgeInsetsMake(0, 0, intersectionFrame.size.height, 0);
[scrollView setContentInset:insets];
[scrollView setScrollIndicatorInsets:insets];
[scrollView flashScrollIndicators];
}
- (void)keyboardWillHide:(NSNotification *)notification
{
UIScrollView *scrollView = (UIScrollView *)self.view;
// This assumes that no one else cares about the table view's insets...
[scrollView setContentInset:UIEdgeInsetsZero];
[scrollView setScrollIndicatorInsets:UIEdgeInsetsZero];
}
Initial URL
Initial Description
Initial Title
Keyboard Notification
Initial Tags
Initial Language
Objective C