动画后UITextView不响应触摸事件

Posted

技术标签:

【中文标题】动画后UITextView不响应触摸事件【英文标题】:UITextView not Responding to Touch Events after Animation 【发布时间】:2012-12-18 23:59:05 【问题描述】:

如果我展开视图,我正在执行动画以正确地将UITextView 保持在屏幕底部。出于某种原因,如果我执行动画,UITextView 停止响应触摸事件,因此不会出现键盘。

我所做的只是:

CGRect newSendTextView = self.commTextView.frame;
newSendTextView.origin.y = (newSendTextView.origin.y + (height - self.defaultSize.size.height));

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:.5];
self.commTextView.frame = newSendTextView;
[UIView commitAnimations];

我知道UITextView 在我进行转换后仍在屏幕上,因为我将UITextView 背景着色为亮蓝色,但它不想响应任何触摸事件。

如果我注释掉 self.commTextView.frame = newSendTextView; 使其不动,触摸事件就会注册。

我不知道为什么会这样,我试过了

[self.commTextView becomeFirstRespond];

我检查了 isEditableisUserInteractionEnabled 是否设置为 1 并且确实如此。

【问题讨论】:

你的 UITextView 前面有对象吗?也许你有一个透明的 UIView,在这种情况下你无法访问它 @MouhamadLamaa 不,我查过了。没有透明视图,在 IB 中 TextView 位于每个项目的前面。 【参考方案1】:

我猜,TextView 的新位置可能会被其他视图覆盖。检查任何其他View 在您的TextView 新位置上是否具有相同的框架。使用clipsToBounds 属性找到它。

【讨论】:

您的回答帮助我弄清楚了。似乎我没有拉伸包含这些视图的 UIView,因此它们没有响应触摸事件。我不知道如果一个视图超出了它的超级视图,它仍然会出现在屏幕上......谢谢 Arthan @Alan :你是如何解决这个错误的?我也有类似的问题***.com/questions/18993151/… @FahimParker 基本上 textview 在包含它的视图之外。例如,如果您将 textview 添加到 (0,0, 100, 100) 的视图中。如果我告诉 textview 转到 (150, 150, 100, 100),它仍然会显示在屏幕上,因为它在 iPhone 屏幕的范围内。但是,如果 textview 不在它被添加到的 UIView 的范围内,它将不会响应触摸事件。基本上我所做的只是调整其父视图的大小,以便 UITextview 始终保持在边界内。

以上是关于动画后UITextView不响应触摸事件的主要内容,如果未能解决你的问题,请参考以下文章