优雅地获取当前键盘框架?

时间:2015-05-11 15:52:27

标签: ios uiview keyboard inputview

是否有一种优雅的方式来获取当前可见的任何inputView的框架(大小)?优雅地,我的意思是不辞职,然后重新激活第一响应者,因为这会丢弃任何kbd状态数据,例如, Shift键状态。

我目前所做的是:

<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>

<svg width="400" height="400">
</svg>
编辑:我应该做的是:

- (CGSize)inputViewSize
{
    __block CGSize result = CGSizeZero;
    UIResponder *firstResponder = [self getFirstResponder];
    id observer = [NSNotificationCenter.defaultCenter addObserverForName:UIKeyboardDidShowNotification object:nil queue:nil usingBlock:^(NSNotification *note)
    {
        result = [note.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue].size;
    }];
    [firstResponder resignFirstResponder];
    [firstResponder becomeFirstResponder];
    [NSNotificationCenter.defaultCenter removeObserver:observer];
    return result;
}

1 个答案:

答案 0 :(得分:0)

您需要观察键盘通知。如果感兴趣的是键盘框架更改,您可以利用以下两个通知:

UIKeyboardWillChangeFrameNotification 
UIKeyboardDidChangeFrameNotification