ios - 在另一个 View 上设置动画后,动画 View 不会接收触摸事件

标签 ios objective-c animation

我有一个第三方网格,用于从 Infragistics 输入数据,称为 IGGridView。就是图中黄色的矩形。

我正在尝试一些动画,只是想在几秒钟内将网格向左移动 300 点。

在制作任何动画之前,我的网格是可滚动的,它的单元格是可触摸的,并且当点击时,会显示一个编辑器来编辑单元格值。

然而,动画结束后,最奇怪的事情发生了,这是我完全没有想到的。黄色矩形网格现在位于重叠 View 上方,仍然通过网格接收其所有触摸事件,但网格根本不接收任何内容。它不会滚动,其单元格也不可点击。就像网格在动画化后就死了一样。 我想也许是因为即使网格出现在顶部,但它并不是真正在顶部,所以我添加了一个完成处理程序并执行了 bringSubviewToFront 调用,但仍然没有任何结果。请注意,如果我触摸最右侧的网格,该网格与左侧的其他 View 不重叠,则网格仍然会收到其触摸,我可以滚动它并编辑一个单元格(无论如何是最右边的单元格)。所以这就好像网格被它重叠的 View 遮挡了。

那里发生了什么?

我的动画代码是向左滑动手势。

-(void)handleSwipeLeftRecognizer:(UISwipeGestureRecognizer*)recognizer
    {            
        [UIView animateWithDuration:2 animations:^{
            grid1.frame = CGRectMake(-300, 0, 340, self.view.frame.size.height);
        } completion:^(BOOL finished) {
            grid1.frame = CGRectMake(-300, 0, 340, self.view.frame.size.height);
            [[UIApplication sharedApplication].keyWindow bringSubviewToFront:grid1];
        }];
    }

在动画之前,它看起来像这样。

enter image description here

动画后看起来像这样。

enter image description here

最佳答案

我想通了。我忘记了我的网格放在透明 View 的顶部,并且当我为它设置动画时它大部分都移到了透明 View 之外,所以我在已经移到外面的网格部分上切断了我所有的触摸内容它的基本观点。

关于ios - 在另一个 View 上设置动画后,动画 View 不会接收触摸事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38005712/

相关文章:

ios - 为什么 Firebase 在更新值时会制作额外的 map ?

objective-c - 查找点靠近线并且位于线的端点之间

android - 旋转动画后如何在ImageView上设置OnClickListener

javascript - 如何在 Hammer.js 中启用滚动

ios - 在 Swift 2 中通过 'prepareForSegue' 传递数据

ios - 从 ALAssetsLibrary 返回 UIImages 的 NSArray

ios - iOS中的全局颜色定义

ios - (在iOS/OS X SDK中)__i386__和__x86_64__在哪里定义?

c# - 将 Storyboards 制作成 WPF 中多个控件可以使用的资源

ios - 如何以编程方式从 UIView 获取当前的十六进制代码颜色