当iOS中显示键盘时,Scrollview不会滚动

时间:2013-02-19 09:09:07

标签: ios

我有一个文本字段,当用户点击时可以向上滑动键盘。然后滚动视图进行调整,以便您可以阅读您正在键入的内容。

我的问题是,一旦这样,我想让用户继续在屏幕上滚动。怎么办呢?

3 个答案:

答案 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];

如果只是部分更改,您也可以选择绘制可见矩形的一部分。

您还可以查看以下示例:

TPKeyboardAvoiding

答案 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属性的高度