您的位置:首页 > 其它

用xib做scrollView的键盘自适应以及自动布局

2016-05-03 14:25 323 查看

首先,拖进来一个scrollView



然后对这个scrollView设置上下左右的约束



接着,拖进来一个UIView



设置这个view的上下左右约束



然后要设置这个view的滚动方向,我是让他垂直滚动,所以选中下面这个,如果垂直水平方向都滚动那么久都不用选了,设置一下view的宽高就行



然后很关键的一步就是,因为你设置的是上下滚动,你就要再设置一下他的高度,他才知道他在什么范围内滚动。



酱紫就大功告成了



下面我们说一下关于键盘的自适应

这个键盘自适应一般都是指监听文本框的输入然后不让键盘遮挡住文本框。所以呢,先要将文本框的代理设置为file‘s owner,遵守UITextFieldDelegate协议,监听键盘弹出和隐藏

先注册监听

(void)viewWillAppear:(BOOL)animated {

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidShow:) name:UIKeyboardDidShowNotification object:self.view.window];

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidHide:) name:UIKeyboardDidHideNotification object:nil];

}

之后别忘了对称的移除监听

(void)viewWillDisappear:(BOOL)animated {

[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardDidShowNotification object:nil];

[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardDidHideNotification object:nil];

}

然后根据键盘的frame设置scrollView的frame

(void)keyboardDidShow:(NSNotification *)notification {

if (self.keyboardIsShown) {

return ;

}

NSDictionary *info = [notification userInfo];

NSValue *value = [info objectForKey:UIKeyboardFrameEndUserInfoKey];

CGRect keyboardRect = [self.view convertRect:[value CGRectValue] fromView:nil];

CGRect viewFrame = [self.scrollView frame];

viewFrame.size.height -= keyboardRect.size.height;

self.scrollView.frame = viewFrame;

CGRect textFieldRect = [self.currentTextField frame];

[self.scrollView scrollRectToVisible:textFieldRect animated:YES];

self.keyboardIsShown = YES;

}

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

self.keyboardIsShown = NO;

}

然后实现UITextField的代理方法

(void)textFieldDidBeginEditing:(UITextField *)textField {

self.currentTextField = textField;

}

(void)textFieldDidEndEditing:(UITextField *)textField {

self.currentTextField = nil;

}

(BOOL)textFieldShouldReturn:(UITextField *)textField {

[textField resignFirstResponder];

return NO;

}

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