目前,我正在创建一个功能,使用UIView动画块将UITextfield从屏幕底部动画到给定点。
由于某些原因,当UITextfield向上动画时,它触摸事件没有响应,并且在调用完成之后才会成为第一个响应者。
我在下面创建了一个示例项目以显示问题。
https://github.com/AdamBCo/Textfield-Animation-Issue
正如您在示例中所看到的,UIViewAnimationOptionAllowUserInteraction在UViewAnimation块中设置。
对此问题的任何帮助将不胜感激!
答案 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场景会是一个好的做法吗?