私はUITableview
と 各セルに があるアプリケーションに取り組んでいますUITextview
。位置を選択すると、カーソル位置がその位置と等しくない場合、2行ジャンプを使用して上にジャンプし、その位置に到達した後、各行ラップで1行ジャンプのみが行われます。しかし、2行ジャンプは機能していません。これがコードです。
CGPoint cursorPosition = [textView caretRectForPosition:textView.selectedTextRange.start].origin;
CGRect cellYPos = [tableView rectForRowAtIndexPath:indexpath];
float newposition = cellYPos.origin.y - self.tableView.contentOffset.y;
newposition += cursorPosition.y;
if(cursorPreviousPosition < cursorPosition.y)
{
cursorPreviousPosition = cursorPosition.y;
CGPoint contentOffset = self.tableView.contentOffset;
if(previousLocation > contentOffset.y)
{
previousLocation = contentOffset.y;
}
if (contentOffset.y < 0)
contentOffset.y = 0;
if(self.isLandScape)
{
if(newposition > 55 && newposition <= 106)
{
if(newposition - 55 > 21)
{
contentOffset.y += textView.font.lineHeight;
contentOffset.y += textView.font.lineHeight;
}
else if(newposition - 55 == 21)
{
contentOffset.y += textView.font.lineHeight;
}
else
{
contentOffset.y += (newposition - 55);
}
[UIView animateWithDuration:0.2 animations:^{
self.tableView.contentOffset = contentOffset;
}];
}
else if(newposition >= 55)
{
contentOffset.y += textView.font.lineHeight;
[UIView animateWithDuration:0.2 animations:^{
self.tableView.contentOffset = contentOffset;
}];
}
}
else
{
if(newposition > 108 && newposition <=196)
{
if(newposition - 108 > 21)
{
NSLog(@"Two lines jump");
contentOffset.y += textView.font.lineHeight;
contentOffset.y += textView.font.lineHeight;
}
else if(newposition - 108 == 21)
{
contentOffset.y += textView.font.lineHeight;
}
else
{
contentOffset.y += (newposition - 108);
}
[UIView animateWithDuration:0.2 animations:^{
self.tableView.contentOffset = contentOffset;
}];
}
else if(newposition >= 108)
{
contentOffset.y += textView.font.lineHeight;
[UIView animateWithDuration:0.2 animations:^{
self.tableView.contentOffset = contentOffset;
}];
}
}