UITextField
をアニメーション化しようとしていますが、厄介で奇妙な問題が発生しました。アプリケーションは、UITextField
を有するカメラUIButton
、それが限界の外に配置されているので示されていないカメラボタン後UIButton
を打ち消す第1の状態にUITextFieldをアニメートするときの奇妙な動作
:私のアニメーションは、以下の配列を有します。アプリケーションの実際に自分のアプリケーションは、幅320があり、キャンセルボタン原点はUITextField
上のユーザタッチは、カメラボタンのアルファチャンネルが0に設定されている第2の状態で(350,7)
、原点のありますキャンセルボタンは(247,7)に設定されています。
ユーザーがキーボードの戻るボタンまたはキャンセルボタンに触れた後、最終的な状態は最初の状態と同じです。
処理中に、UITextFieldの幅とx軸のキャンセルボタンの原点がアニメーション化されます。
私のコードは次のとおりです。
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
barcodeSearchButton.userInteractionEnabled = NO;
cancelButton.userInteractionEnabled = NO;
CGFloat cancelButtonXOffset = CGRectGetMaxX(barcodeSearchButton.frame) - cancelButton.frame.size.width;
CGFloat searchFieldWidth = searchField.frame.size.width - cancelButton.frame.size.width + barcodeSearchButton.frame.size.width;
[UIView animateWithDuration:0.3
animations:^{
searchField.frame = CGRectMake(searchField.frame.origin.x, searchField.frame.origin.y, searchFieldWidth, searchField.frame.size.height);
cancelButton.alpha = 1.0;
cancelButton.frame = CGRectMake(cancelButtonXOffset, cancelButton.frame.origin.y, cancelButton.frame.size.width,cancelButton.frame.size.height);
barcodeSearchButton.alpha = 0.0;
}
completion:^(BOOL finished) {
barcodeSearchButton.userInteractionEnabled = NO;
cancelButton.userInteractionEnabled = YES;
}];
}
- (void)textFieldDidEndEditing:(UITextField *)textField
{
barcodeSearchButton.userInteractionEnabled = NO;
cancelButton.userInteractionEnabled = NO;
[UIView animateWithDuration:0.3
animations:^{
searchField.frame = CGRectMake(searchField.frame.origin.x, searchField.frame.origin.y, searchFieldStartWidth, searchField.frame.size.height);
cancelButton.alpha = 0.0;
cancelButton.frame = CGRectMake(cancelButtonStartX, cancelButton.frame.origin.y, cancelButton.frame.size.width,cancelButton.frame.size.height);
barcodeSearchButton.alpha = 1.0;
}
completion:^(BOOL finished) {
barcodeSearchButton.userInteractionEnabled = YES;
cancelButton.userInteractionEnabled = NO;
}];
}
アニメーションを意味し、初回のみ、最終的な状態になるまで実行された場合、ユーザーはフィールド上(この部分は重要である)、いくつかのテキストを書き留め、UITextFieldの上で触れましたその後、ユーザーがキーボード戻りボタンをタッチすると、問題が表示されます。問題は、UITextFieldの幅がアニメーション化されても、UITextFieldの型付きテキストがアニメーション化されることです。
アニメーションは怒鳴るように振る舞う:
UITextField
ストレッチバックその初期値に設定します。- カメラボタンが1.0
- に設定され、その最初の原点にボタンバックをキャンセル入力したテキストは、
UITextField
の左上隅から飛ぶと、それがなくなっていないはずTHEそれが位置にUITextfield
に土地。
問題は、ステップ4が起こらず、問題が1回だけ発生することです。プロセスを再度開始する場合(uitextフィールドに触れる、テキストを入力する、リターンキーを押す)、手順4は実行されません。
私はこの問題を解決しようとして一日を費やしましたが、失敗しました。
また、あなたの色と混乱、あなたにもそれを修正する必要がありますことので代わりにプレースホルダーテキストプロパティのテキストを使用して。 –