UITextField无法在动画制作时成为第一响应者

问题描述:

目前,我正在创建一个使用UIView动画块将屏幕底部的UITextfield动画到给定点的功能。UITextField无法在动画制作时成为第一响应者

由于某些原因,UITextfield向上动画时,它对触摸事件没有响应,并且在它调用完成之前不会成为第一响应者。

我在下面创建了一个示例项目来显示该问题。

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

正如你所看到的例子,UIViewAnimationOptionAllowUserInteraction在UViewAnimation块设置。

对这个问题的任何帮助将不胜感激!

我能够通过实施以下解决方案来解决这个问题:

- (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]; 
    } 
} 

因为我已经更新了示例代码网上显示演示层,模型层的结束目的地的动画,一种查看点击是否位于表示层内的方法。

这实际上是预期的操作。你所看到的是CALayer的动画效果,因此它不会对触摸做出响应,直到它“落地”。你可以做的是添加一个触摸识别器,然后测试你的生命值,开始响应某个对象。我不得不问,什么UI/UX的情况下,这是好的做法?

+0

这对我来说很有帮助,我将动态显示文本框的背景颜色以表明它需要注意。它实际上是用于糟糕的用户体验,用户不得不等待动画(尽管很简单)才会消失。 –