动画后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不响应触摸事件的主要内容,如果未能解决你的问题,请参考以下文章

iOS10 UITextView 触摸事件崩溃

解除键盘后,带有所选文本的UITextView不响应触摸

UIButton 不响应触摸事件

为啥我的 UItextView 顶部的子视图没有被触摸?

Webview 不响应触摸事件

UITextField 添加到 UIView 时不响应触摸事件