3

私は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;
            }];
        }
    }
4

0 に答える 0