这里的时候,我可能需要在iOS上滚动简单的情况下,我正在寻找编码解决方案少在iOS 6中至少工作7IOS激活滚动登录屏幕上时,键盘出现
所以,经典的登录表单:
并开始编辑后用户意识到自己需要先注册,所以他应该能够向下滚动到相应的按钮
在这种情况下最好使用故事板可视化编辑器来激活滚动的最简单方法是什么? 谢谢。
这里的时候,我可能需要在iOS上滚动简单的情况下,我正在寻找编码解决方案少在iOS 6中至少工作7IOS激活滚动登录屏幕上时,键盘出现
所以,经典的登录表单:
并开始编辑后用户意识到自己需要先注册,所以他应该能够向下滚动到相应的按钮
在这种情况下最好使用故事板可视化编辑器来激活滚动的最简单方法是什么? 谢谢。
添加您的组件UIScrollView
,然后将它contentSize
财产登记按钮的底部:
scroll.contentSize = CGSizeMake(scroll.frame.size.width, Button.frame.origin.y+Button.frame.size.height);
如果它滚动小于或等于的contentSize高度的高度,滚动不会滚动。所有你应该做的就是减少它的高度,而不是显示键盘。
这样做,你必须在viewDidLoad
方法添加观察员通知UIKeyboardWillShowNotification
和UIKeyboardDidHideNotification
,例如:
[[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像素 - 是键盘的高度。
在故事板中没有办法做到这一点。您必须在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;
}
这将允许您在出现键盘时在滚动视图内滚动。如果您对滚动视图的工作方式有任何疑问,请随时发表评论!
因此,LoginViewController的根视图应该是以UIView作为子视图的ScrollView,是否正确? – abovesun
没错。如果你不这样做,就不会有滚动。 – CoderSpinoza
不幸的是,我得到了不同的效果,之前我点击编辑文本区域是可滚动的,并且在我点击和contentSize的滚动更改 - 滚动被禁用 – abovesun
在故事板中,您可以单击UIScrollView,然后在右侧部分中选择“On Drag”或“Interactive”键盘部分。
因此,运行并尝试; 当键盘出现并且您滚动视图时,键盘将消失。
祝你好运!
请注意,在景观中键盘的高度是不同的 –
谢谢,我得到最接近行为到我所需要的,目前正在挖掘如何以编程方式查找键盘宽度 – abovesun
我认为这可以帮助您: http://stackoverflow.com/questions/11298688/keyboard-size-given-by-nsnotificationcenter – xexe