1

さて、私はここで迷っています。

これで、追加ボタンをクリックするたびに新しい編集可能なものを追加する場所にUIViewController呼び出すことができます。viewController1UITextView

次に、UIPanGestureRecognizer必要な場所にドラッグできるようにします。これはうまくいきます。に行きたいのviewController2です[self.navigationController pushViewController:viewController2 animated:YES];が、戻るボタンを押すと、で作成されviewController1た最初のものに戻ります。なくなったわけではありませんが、textview 内の text プロパティが移動しました。UITextViewviewController1

これは、私が作成した UITextView の最初のインスタンスで発生するだけです。ここでアイデアをいただければ幸いです。テキストを作成するための私の方法は次のとおりです。

-(void)addTextFieldToScreen
{
    UITextView *textView = [[UITextView alloc]initWithFrame:CGRectMake(10, 80, 140, 120)];
    textView.text = @"TEXT";
    textView.backgroundColor = [UIColor clearColor];
    textView.textColor = [UIColor purpleColor];
    textView.font = [UIFont fontWithName:@"AmericanTypewriter" size:30];
    textView.userInteractionEnabled = YES;

    UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(moveText:)];
    panRecognizer.minimumNumberOfTouches = 1;
    panRecognizer.maximumNumberOfTouches = 1;
    panRecognizer.delegate = self;
    [textView addGestureRecognizer:panRecognizer];
    [self.view addSubview:textView];
}

textView をドラッグ可能にする方法は次のとおりです。

-(void)moveText:(id)sender {

    [[[(UITapGestureRecognizer*)sender view] layer] removeAllAnimations];

    [self.view bringSubviewToFront:[(UIPanGestureRecognizer*)sender view]];
    CGPoint translatedPoint = [(UIPanGestureRecognizer*)sender translationInView:self.view];

    if([(UIPanGestureRecognizer*)sender state] == UIGestureRecognizerStateBegan) {

        firstX = [[sender view] center].x;
        firstY = [[sender view] center].y;

    }

    translatedPoint = CGPointMake(firstX+translatedPoint.x, firstY+translatedPoint.y);

    [[sender view] setCenter:translatedPoint];

    if([(UIPanGestureRecognizer*)sender state] == UIGestureRecognizerStateEnded) {

        CGFloat finalX = translatedPoint.x + (.35*[(UIPanGestureRecognizer*)sender velocityInView:self.view].x);
        CGFloat finalY = translatedPoint.y + (.35*[(UIPanGestureRecognizer*)sender velocityInView:self.view].y);
        CGRect screenRect = [[UIScreen mainScreen] bounds];
        CGFloat workingWidth = screenRect.size.width - 40;
        CGFloat workingHeight = screenRect.size.height - 80;

        if(finalX < 50) {

            finalX = 50;
        }

        else if(finalX > workingWidth ) {

            finalX = workingWidth;
        }

        if(finalY < 80) {

            finalY = 80;
        }

        else if(finalY > workingHeight) {

            finalY = workingHeight;
        }


        [UIView beginAnimations:nil context:NULL];
        [UIView setAnimationCurve:UIViewAnimationCurveLinear];
        [UIView setAnimationDuration:.20];
        [UIView commitAnimations];
    }
}

編集:

さて、ここで何が起こっているのか、viewController1の右隅にある「テキストを追加」ボタンを使用して、コンテンツ「TEXT」を含む2つのテキストビューを追加します。

ここに画像の説明を入力

そして、viewController2 から viewController1 に戻ると、次のように表示されます。

ここに画像の説明を入力

ご覧のとおり、位置を変更するのは左の textView インスタンスのテキスト プロパティだけであり、これが最初に追加するものです。

4

0 に答える 0