关于ios键盘遮挡输入框

来源:互联网 发布:易燃物品附有的数据 编辑:程序博客网 时间:2024/05/16 05:37

方法是针对ios5.0之后键盘高度随输入法不同变化时的解决办法,同时也适用于ios5.0之前

在-(void)viewDidLoad方法里面添加通知

if(IOS_VERSION<5.0)
    {
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillHideNotification object:nil];
    }else{
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
    }


至于如何获取IOS系统版本号通过如下可获取

#define IOS_VERSION [[[UIDevice currentDevice] systemVersion] floatValue]


添加一个方法-(void)keyboardWillShow:(NSNotification *)notification具体如下


-(void)keyboardWillShow:(NSNotification *)notification
{


#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_3_2
        if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
#endif
#if __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_3_2
            NSValue *keyboardBoundsValue = [[notification userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey];
#else
            NSValue *keyboardBoundsValue = [[notification userInfo] objectForKey:UIKeyboardBoundsUserInfoKey];
#endif
            CGRect keyboardBounds;
            [keyboardBoundsValue getValue:&keyboardBounds];
            NSInteger offset =self.view.frame.size.height-keyboardBounds.origin.y+64.0;
            CGRect listFrame = CGRectMake(0, -offset, self.view.frame.size.width,self.view.frame.size.height);
            NSLog(@"offset is %d",offset);
            [UIView beginAnimations:@"anim" context:NULL];
            [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
            [UIView setAnimationBeginsFromCurrentState:YES];
            [UIView setAnimationDuration:0.3];
            //处理移动事件,将各视图设置最终要达到的状态
    
            self.view.frame=listFrame;
            
            [UIView commitAnimations];
            
        }
}

原创粉丝点击