2016-04-25 16 views
1

現時点では、UIViewアニメーションブロックを使用して、画面の下端からUITextfieldを特定の点にアニメーション化する機能を作成しています。アニメーション中にUITextFieldを最初のレスポンダにすることはできません

何らかの理由で、UITextフィールドが上向きにアニメーションされている間に、タッチイベントに反応せず、完了を呼び出すまで最初のレスポンダになりません。

問題を表示するために、以下のサンプルプロジェクトを作成しました。

https://github.com/AdamBCo/Textfield-Animation-Issue

あなたが例で見ることができるように、UIViewAnimationOptionAllowUserInteractionはUViewAnimationブロックに設定されています。

この問題に関するお手伝いをさせていただきます。

答えて

1

私は以下のソリューション実装することで、問題を解決することができた:私は以来、プレゼンテーション層のアニメーションを表示するには、オンラインモデル層のエンディング先をサンプルコードを更新した

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    UITouch *touch = [touches anyObject]; 
    CGPoint touchLocation = [touch locationInView:self.view]; 

    if ([self.textField.layer.presentationLayer hitTest:touchLocation]) 
    { 
     [self.textField becomeFirstResponder]; 
    } 
} 

をし、クリックがプレゼンテーションレイヤーの内側にあるかどうかを確認する方法。

0

これは実際に意図された動作です。あなたが見ているのはCALayerのアニメーションです。そのため、 "着陸"するまでタッチに反応しません。あなたが行うことができることは、タッチ認識装置を追加し、ヒットポイントをテストして、特定のオブジェクトに対して応答を開始することです。私は、UI/UXのシナリオはどのようなものが良いのでしょうかと尋ねなければなりません。

+0

これは、注意が必要であることを示すために、テキストフィールドの背景色をアニメーション化しているシナリオで私にとって有益でした。実際には悪いUXのために、ユーザーはアニメーション(簡潔ではあるが)が消えるのを待たなければならないようにすべきであった。 –

関連する問題