当键盘出现时,ios激活登录表单上的滚动

时间:2014-03-29 17:36:00

标签: ios xcode uiscrollview

这是最简单的情况,我可能需要在ios上滚动,我正在寻找编码较少的解决方案,至少在iOS 6和7上工作

所以,经典的登录表单:

enter image description here

开始编辑后,用户意识到他需要先注册,所以他应该可以向下滚动到相应的按钮

enter image description here

在这种情况下,激活滚动的最简单方法是什么,最好使用storyboard visual editor? 感谢。

3 个答案:

答案 0 :(得分:3)

将您的组件添加到UIScrollView,然后将其contentSize属性设置为注册按钮的底部:

scroll.contentSize = CGSizeMake(scroll.frame.size.width, Button.frame.origin.y+Button.frame.size.height);

如果滚动的contentSize高度小于或等于它的高度,则滚动将不可滚动。你所要做的就是降低它的高度而不是显示键盘,并再次增加。

为此,您必须添加通知UIKeyboardWillShowNotificationUIKeyboardDidHideNotification的观察者,例如viewDidLoad方法:

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

处理通知的方法:

-(void)keyboardWillShow{
     scroll.frame = CGRectMake(scroll.frame.origin.x, scroll.frame.origin.y, scroll.frame.size.width, scroll.frame.size.height-220);
}

-(void)keyboardDidHide{
     scroll.frame = CGRectMake(scroll.frame.origin.x, scroll.frame.origin.y, scroll.frame.size.width, scroll.frame.size.height+220);
}

220 px - 是键盘的高度。

答案 1 :(得分:0)

在故事板中无法做到这一点。您必须在UIScrollView中包含整个视图并观察键盘事件以获取键盘大小,然后从滚动视图高度中减去该高度。

首先,您必须将视图控制器声明为文本字段委托。

@interface LoginViewController () <UITextFieldDelegate>

现在你必须添加一个文本委托方法,当你专注于一个字段并出现一个键盘时,它将被调用。

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {   
    self.scrollView.contentSize = CGSizeMake(self.view.frame.size.width, self.view.frame.size.height);
    [self.scrollView scrollRectToVisible:textField.frame animated:YES];
    return YES;
}

这将允许您在键盘出现时滚动滚动视图。如果您对滚动视图的工作方式有任何疑问,请随时发表评论!

答案 2 :(得分:0)

在storyboard中,您可以单击UIScrollView,然后在右侧部分中选择“On Drag&#39;或者&#39;互动&#39;用于键盘部分。

所以跑步并尝试; 当键盘出现并滚动视图时,键盘将消失。

祝你好运!