我有一个文本字段,当用户单击时会向上滑动键盘。然后滚动视图调整,以便您可以阅读您正在输入的内容。
我的问题是,一旦这样,我想让用户继续在屏幕上滚动。如何才能做到这一点?
第1部分:
滚动视图的内容大小实际上与其包含的视图的大小或位置无关。如果要更改内容视图的大小以及滚动视图的内容,则需要调用两种不同的方法。
CGSize newSize;
UIScrollView *scrollView;
// assume self is the content view
CGRect newFrame = (CGRect){CGPointZero,newSize}; // Assuming you want to start at the top-left corner of the scroll view. Change CGPointZero as appropriate
[ scrollView setContentSize:newSize]; // Change scroll view's content size
[self setFrame:newFrame]; // Change views actual size
第2部分:
setNeedsDisplay 将整个视图标记为需要显示。要使其仅显示可见部分,您需要使用 setNeedsDisplayInRect:visibleRect。假设视图位于左上角(其框架的原点为 0)并且滚动视图不允许缩放,则可以使用滚动视图的内容偏移量和边界大小找到可见的矩形。
CGRect visibleRect;
visibleRect.origin = [scrollView contentOffset];
visibleRect.size = [scrollView bounds].size;
[self setNeedsDisplayInRect:visibleRect];
如果仅部分更改,您也可以选择绘制可见矩形的一部分。
您还可以查看以下示例:
- (void)viewDidLoad
{
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWasShown:)
name:UIKeyboardDidShowNotification
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWasShown:)
name:UIKeyboardWillHideNotification
object:nil];
}
- (void)keyboardWasShown:(NSNotification *)notification
{
// To avoid keyboard hides the view
CGRect frame = self.view.bounds;
if (capitalTextField.enabled ==YES)
{
if ([notification name]== UIKeyboardDidShowNotification )
{
frame.origin.y += 200;
[self.scrollView scrollRectToVisible:frame animated:YES];
}
else
{
frame.origin.y -= 200;
[self.scrollView scrollRectToVisible:frame animated:YES];
}
}
}
只需增加 Scrollview 的 contentsize 属性的高度