End On Exit
現在選択されているイベントで特定のテキストフィールドがクリックされたかどうかを検出しようとしていますTextField
。説明しようとする代わりに、お見せしましょう。
- (IBAction)txtUsernameEdit:(id)sender {
CGRect loginButton = btnLogin.frame;
CGRect registerButton = btnRegister.frame;
loginButton.origin.x = 19;
loginButton.origin.y = 175;
registerButton.origin.x = 189;
registerButton.origin.y = 175;
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5];
btnLogin.frame = loginButton;
btnRegister.frame = registerButton;
}
- (IBAction)txtUsernameEndExit:(id)sender {
if (!txtPassword.isTouchInside) {
CGRect loginButton = btnLogin.frame;
CGRect registerButton = btnRegister.frame;
loginButton.origin.x = 19;
loginButton.origin.y = 308;
registerButton.origin.x = 189;
registerButton.origin.y = 308;
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5];
btnLogin.frame = loginButton;
btnRegister.frame = registerButton;
}
}
- (IBAction)txtPasswordEdit:(id)sender {
CGRect loginButton = btnLogin.frame;
CGRect registerButton = btnRegister.frame;
loginButton.origin.x = 19;
loginButton.origin.y = 175;
registerButton.origin.x = 189;
registerButton.origin.y = 175;
[UIView beginAnimations:nil context :nil];
[UIView setAnimationDuration:0.5];
btnLogin.frame = loginButton;
btnRegister.frame = registerButton;
}
- (IBAction)txtPasswordEndExit:(id)sender {
if (!txtPassword.isHighlighted) {
CGRect loginButton = btnLogin.frame;
CGRect registerButton = btnRegister.frame;
loginButton.origin.x = 19;
loginButton.origin.y = 308;
registerButton.origin.x = 189;
registerButton.origin.y = 308;
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5];
btnLogin.frame = loginButton;
btnRegister.frame = registerButton;
}
}
だから私は2つのテキストフィールドtxtUsername
とtxtPassword
. 関数txtUsernameEndExit
とtxtPasswordEndExit
は、ユーザーが反対側のテキストフィールドまたはキーボードの完了キーをクリックしたときに起動されます。ユーザーが実際にそこをクリックした場合、これらの関数でどのように確認できますか?
if-clause では、次の属性とメソッドを試しました: - isFirstResponder - isTouchInside - isEditing - isHighlighted
しかし、End On Exit 関数がまだ起動されていない場合、これらの属性はどれも変更されていないと思います。
適切なアプローチは何でしょうか?
編集 - 異なるアプローチ そこで、最近、キーボードの表示または非表示も観察できると考えました。ビューで自動レイアウトを有効にしており、テキストフィールドが 2 つとボタンが 2 つしかありません。テキストフィールドをタップするとすぐに、アニメーションが説明するようにボタンが表示され、再び下に移動します(明らかに自動反転がこれを行います)が、テキストフィールドをタップしてから別のテキストフィールドをタップすると、キーボードは下がらず、ボタンは下に移動します。これをアニメーション化するために使用したすべてのコードは次のとおりです。
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardDidShow:)
name:UIKeyboardDidShowNotification
object:nil];
}
- (void)keyboardDidShow: (NSNotification *) notif{
CGRect loginButton = btnLogin.frame;
CGRect registerButton = btnRegister.frame;
loginButton.origin.x = 19;
loginButton.origin.y = 175;
registerButton.origin.x = 189;
registerButton.origin.y = 175;
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5];
btnLogin.frame = loginButton;
btnRegister.frame = registerButton;
}