Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

UITextView, setContentOffset and missing bottom part

For some strange reason, my UITextView's text appears cropped when the scrollofset is set.

Here's what it looks like: enter image description here

This happens after doing:

        textview.contentInset = UIEdgeInsetsZero;
        [textview setContentOffset:CGPointMake(0, startypos + offset_yshift) animated:NO];

I tried manually setting contentSize.height, but that introduced another strange behavior, where the content offset seems to be ignored..

''Edit'': This is the code used to instantiate the textfield:

  CGRect myImageRect = CGRectMake(-50.0f, -50.0f, 40.0f, 40.0f);
  textview = [[UITextView alloc] initWithFrame: myImageRect];
  textview.autocapitalizationType = UITextAutocapitalizationTypeNone;
  [textview setScrollEnabled:YES];
  textview.hidden = YES;
  textview.contentInset = UIEdgeInsetsZero;
  textview.opaque = NO;
  textview.backgroundColor = [UIColor clearColor];
  textview.textColor = [UIColor colorWithWhite:1 alpha:1];
  textview.textAlignment = NSTextAlignmentCenter;
  textview.frame = CGRectMake(0, 0, 250, 30);
  textview.scrollEnabled = NO;

And the "update" code that checks the content positioning every frame:

  // setting the actual size here
  UITextPosition * pos = [textview positionFromPosition: textview.endOfDocument offset:nil];
  CGRect therect = [textview caretRectForPosition:pos];

  CGRect frame = textview.frame;

  if([textview.text length] == 0){
     frame.size.height = 30;
  } else {
     frame.size.height = therect.origin.y + therect.size.height;
  }

  // and here, we're changing the frame variable's height to max to 50
  if(frame.size.height > 50){
     frame.size.height = 50;
  }
  frame.size.width = desiredwidth; // some other variable

  textview.frame = frame;

  /*

     ... snip, unrelated code ...

  */

  // later on

        textview.contentInset = UIEdgeInsetsZero;
        [textview setContentOffset:CGPointMake(0, startypos + offset_yshift) animated:NO];

As you can imagine, the setContentOffset bit there is what's causing the issue.

What is going on?

like image 460
kamziro Avatar asked Sep 25 '13 12:09

kamziro


1 Answers

please try this from prev post

CGPoint offset = CGPointMake(0, self.textView.contentSize.height - self.textView.frame.size.height);
[self.textView setContentOffset: CGPointMake(0,0) animated:NO]; 
or
[self.textView setContentOffset:bottomOffset animated:YES];

[post]: UITextView contentOffset on iOS 7 "prev post"\

like image 64
3 revs Avatar answered Oct 29 '22 17:10

3 revs