我有一个文本字段,当用户点击时可以向上滑动键盘。然后滚动视图进行调整,以便您可以阅读您正在键入的内容。
我的问题是,一旦这样,我想让用户继续在屏幕上滚动。怎么办呢?
答案 0 :(得分:0)
第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)且滚动视图不允许缩放,则可以使用滚动视图的内容偏移和边界大小找到可见的rect。
CGRect visibleRect;
visibleRect.origin = [scrollView contentOffset];
visibleRect.size = [scrollView bounds].size;
[self setNeedsDisplayInRect:visibleRect];
如果只是部分更改,您也可以选择绘制可见矩形的一部分。
您还可以查看以下示例:
答案 1 :(得分:-1)
- (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];
}
}
}
答案 2 :(得分:-1)
只需增加Scrollview的contentize属性的高度