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:

i can't determine how calculate offset , scroll current caret like.
my initial screen:

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
Post a Comment