键盘通知事件

[[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
{
    NSDictionary* userInfo = [notification userInfo];
    NSValue* aValue = [userInfo objectForKey:UIKeyboardFrameEndUserInfoKey];
    CGRect keyboardRect = [aValue CGRectValue];
    
    // Get the duration of the animation.
    NSValue* animationDurationValue = [userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey];
    NSTimeInterval animationDuration;
    [animationDurationValue getValue:&animationDuration];
   	
    CGPoint pt = lastEditTextField.center;
    pt = [setView_ convertPoint:pt fromView:lastEditTextField.superview];
    NSIndexPath* indexPath = [setView_ indexPathForRowAtPoint:pt];
    [setView_ scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewRowAnimationTop animated:YES];
}

如果对键盘弹起和收起的操作一致,那么就监听 UIKeyboardWillChangeFrameNotification 这个通知,响应函数实现:(IOS7下验证通过)

- (void)keyboardFrameChanged:(NSNotification *)notification {
    NSDictionary *userInfo = [notification userInfo];

    NSNumber *animationDurationObject = [userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey];
    NSValue *keyboardBeginRectObject = [userInfo objectForKey:UIKeyboardFrameBeginUserInfoKey];
    NSValue *keyboardEndRectObject = [userInfo objectForKey:UIKeyboardFrameEndUserInfoKey];

    double duration = [animationDurationObject doubleValue];
    CGRect begin = [keyboardBeginRectObject CGRectValue];
    CGRect end = [keyboardEndRectObject CGRectValue];

    BOOL isKeyboardHidden = (end.origin.y == kFullWindowHeight);

    float deltaHeight = 0;
    // show or hide
    if (begin.size.height != end.size.height || begin.origin.y != end.origin.y) {
        deltaHeight = begin.origin.y - end.origin.y;
    } else {
    // change from other input way to jiu gong ge , height and y is both equal
        deltaHeight = end.size.height - _lastKeyboardHeight;
    }
    // rember last keyboard height value
    _lastKeyboardHeight = end.size.height;

    CGRect newFrame = _avatarMessagesView1.frame;
    newFrame.size.height -= deltaHeight;
    ....
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值