0

ビューにサブビュー ( UITextField) を追加し、同じ方法で a のフレーム プロパティを変更しようとしUITextViewていますが、期待どおりに動作しません。これはコードです:

UITextField *textField = [[UITextField alloc] init];
textField.backgroundColor = [UIColor redColor];
textField.frame = CGRectMake(0, 120, 240, 40);

[UIView beginAnimations:@"MoveView" context:nil];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
[UIView setAnimationDuration:0.5f];
self.tvContent.frame = CGRectMake(0, 80, self.tvContent.frame.size.width, self.tvContent.frame.size.height);
[UIView commitAnimations];
[self.view insertSubview:textField aboveSubview:self.tvContent];

注: tvContent は、UITextView位置を変更しようとしているオブジェクトです。

私が直面している問題は、コードの最後の行 (insertSubview) が配置されている場合、まったくUITextView動かないことです。でも現れる。ただし、最後の行を削除すると、テキストビューの位置がうまく変わります。The UITextField

self.tvContent の frame プロパティを設定するだけでアニメーションなしで試してみましたが、同じ動作が発生しました。

これを修正するためのアイデアはありますか?

4

2 に答える 2

0

こうやって、

UITextField *textField = [[UITextField alloc] init];
textField.backgroundColor = [UIColor redColor];
textField.frame = CGRectMake(0, 120, 240, 40);

[UIView beginAnimations:@"MoveView" context:nil];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
[UIView setAnimationDuration:0.5f];
self.tvContent.frame = CGRectMake(0, 80, self.tvContent.frame.size.width, self.tvContent.frame.size.height);
[UIView setAnimationDidStopSelector:@selector(animationFinish)];
[UIView commitAnimations];

-(void)animationFinish {
[self.view insertSubview:textField aboveSubview:self.tvContent];
}
于 2013-02-11T08:31:36.193 に答える
0

古き良きbeginAnimationsものを使い続けている理由はありますか?

これは同じことをします:

[UIView animateWithDuration:0.5 animations:^(void) {
    self.tvContent.frame = CGRectMake(0, 80, self.tvContent.frame.size.width, self.tvContent.frame.size.height);
} completion:^(BOOL finished) {
    [self.view addSubview:textField];
}];

編集: addSubView を追加するとどうなりますか?

于 2013-02-11T08:36:20.250 に答える