Ios 设置动画时,UITextField不能成为第一响应者

Ios 设置动画时,UITextField不能成为第一响应者,ios,objective-c,animation,Ios,Objective C,Animation,目前,我正在创建一个功能,使用UIView动画块将UIExtField从屏幕底部动画化到给定点 由于某些原因,当UITextfield向上动画时,它对触摸事件没有响应,并且在调用completion之前不会成为第一个响应者 我在下面创建了一个示例项目来展示这个问题 正如您在示例中所看到的,UIViewAnimationOptionAllowUserInteraction是在UViewAnimation块中设置的 在此问题上的任何帮助都将不胜感激 这实际上是预期的行动。您看到的是CALayer动

目前,我正在创建一个功能,使用UIView动画块将UIExtField从屏幕底部动画化到给定点

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

我在下面创建了一个示例项目来展示这个问题

正如您在示例中所看到的,UIViewAnimationOptionAllowUserInteraction是在UViewAnimation块中设置的


在此问题上的任何帮助都将不胜感激

这实际上是预期的行动。您看到的是CALayer动画,因此它在“着陆”之前不会对触摸做出响应。你可以做的是添加一个触摸识别器,然后测试你的生命点,开始对某个物体做出反应。我不得不问,这是什么UI/UX场景的好做法?

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

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

此后,我在线更新了示例代码,以显示演示层的动画、模型层的结束目标,以及查看单击是否在演示层内部的方法。

这对我设置文本字段背景颜色动画以表示需要注意的场景很有帮助。实际上,用户必须等待动画(虽然短暂)淡出,这会造成糟糕的用户体验。