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

时间:2016-04-25 23:47:08

标签: ios objective-c animation

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

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

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

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

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

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

2 个答案:

答案 0 :(得分: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];
    }
}

我已经在线更新了示例代码,以显示表示层的动画,模型图层的结束目标,以及查看点击是否在表示层内的方法。

答案 1 :(得分:0)

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