这是最简单的情况,我可能需要在ios上滚动,我正在寻找编码较少的解决方案,至少在iOS 6和7上工作
所以,经典的登录表单:
开始编辑后,用户意识到他需要先注册,所以他应该可以向下滚动到相应的按钮
在这种情况下,激活滚动的最简单方法是什么,最好使用storyboard visual editor? 感谢。
答案 0 :(得分:3)
将您的组件添加到UIScrollView
,然后将其contentSize
属性设置为注册按钮的底部:
scroll.contentSize = CGSizeMake(scroll.frame.size.width, Button.frame.origin.y+Button.frame.size.height);
如果滚动的contentSize高度小于或等于它的高度,则滚动将不可滚动。你所要做的就是降低它的高度而不是显示键盘,并再次增加。
为此,您必须添加通知UIKeyboardWillShowNotification
和UIKeyboardDidHideNotification
的观察者,例如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;用于键盘部分。
所以跑步并尝试; 当键盘出现并滚动视图时,键盘将消失。
祝你好运!