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的情况下,这是好的做法?
这对我来说很有帮助,我将动态显示文本框的背景颜色以表明它需要注意。它实际上是用于糟糕的用户体验,用户不得不等待动画(尽管很简单)才会消失。 –