例如一个UIScrollView上有多上输入框,为了避免键盘遮盖整理了一下方法,大家可以借鉴一下。
- (void)dealloc
{
[[NSNotificationCenter defaultCenter]removeObserver:self name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter]removeObserver:self name:UIKeyboardWillHideNotification object:nil];
}// 释放
//增加监听,当键盘出现或改变时收出消息
[[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 *)aNotification
{
//获取键盘的高度
NSDictionary *userInfo = [aNotification userInfo];
NSValue *value = [userInfo objectForKey:UIKeyboardFrameEndUserInfoKey];
CGRect keyboardRect = [value CGRectValue];
CGFloat keyboardY = keyboardRect.origin.y;
CGRect frame = self.m_MoneyView.frame;
UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow];
UIView *first= [keyWindow performSelector:@selector(firstResponder)];
CGFloat firstMaxY = CGRectGetMaxY(first.frame);
// 获取当前控件在Window中的坐标
UIWindow * window=[[[UIApplication sharedApplication] delegate] window];
CGRect firstResponderBounds = [first convertRect:first.bounds toView:window];
CGFloat firstResponderH = CGRectGetHeight(first.bounds);
firstMaxY = firstResponderBounds.origin.y + firstResponderH;
if (firstMaxY > keyboardY) {
frame.origin.y -= (firstMaxY - keyboardY);}
self.m_MoneyView.frame = frame;}
//当键退出时调用
- (void)keyboardWillHide:(NSNotification *)aNotification
{
if (self.m_MoneyView.frame.origin.y != 0) {
self.m_BackView.frame = self.view.bounds;}
}