ios - Determine scroll offset for UITextView in UIScrollVIew -


i have uitextview , other views below , after textview in uiscrollview. when user enter text change textview frame height on textview.contentsize.height. idea save possibility user see text , other elements. have issue. when user tap want scroll line. , must seems like:

enter image description here

i can't determine how calculate offset , scroll current caret like.

my initial screen:

enter image description here

all views subviews of uiscrollview. every time when user enter @"\n" change uitextview frame:

cgrect textviewframe = textview.frame; cgsize textviewcontentsize = textview.contentsize; nslog(@"textview content size: %@", nsstringfromcgsize(textviewcontentsize)); textviewframe.size.height = textviewcontentsize.height; [textview setframe:textviewframe]; 

and increment uiscrollview contentsize. problem - don't understand how scroll textview's cursor when under keyboard. try something:

cgpoint cursorposition = [textview caretrectforposition:textview.selectedtextrange.start].origin;  cgpoint relativecursorpoint = [textview convertpoint:cursorposition toview:scrollview];  if(textview.isfirstresponder && relativecursorpoint.y >= scrollviewframe.size.height + scrollview.contentoffset.y) {     int offset = relativecursorpoint.y - scrollviewframe.size.height + 18.0f;     //int offset = textviewrect.origin.y - scrollviewframe.size.height + 18.0f;     [scrollview setcontentoffset:cgpointmake(0, offset) animated:yes]; } 

but didn't work.

ok, if trying scroll uitextview 'above' keyboard can use -[uitextview textviewdidbeginediting:] modify content offset scrollview on initial touch, if you're wanting scroll everytime user adds newline or similar should able use -[uitextview shouldchangetextinrange:] follows.

- (bool)textview:(uitextview *)textview shouldchangetextinrange:(nsrange)range replacementtext:(nsstring *)text {     if ([text isequaltostring:@"\n"]) {         // user has pressed 'return' , entered new line         // change content offset + height of line text         self.textview.contentoffset = cgpointmake(x, y);           return no;     }      return yes; } 

uitextview inherits uiscrollview can change content offset in uiscrollview.


Comments

Popular posts from this blog

matlab - Deleting rows with specific rules -

php - MySQLi multi_query results for later use -