您的位置:首页 > 移动开发 > IOS开发

关于ios键盘遮挡输入框

2013-08-29 11:05 337 查看
方法是针对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];

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: