动画后UITextView无法响应触摸事件

4

我正在执行一个动画,以便在扩展视图时正确地将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,在这种情况下,你无法访问它。 - Mouhamad Lamaa
@MouhamadLamaa 不,我已经检查过了。没有透明视图,在IB TextView 在每个项目的前面。 - Alan
1个回答

1

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


你的回答帮助我解决了问题。看来我没有拉伸包含这些视图的UIView,所以它们没有响应触摸事件。我不知道如果一个视图在其父视图之外,它仍然会显示在屏幕上...谢谢Arthan。 - Alan
@Alan:你是怎么解决这个错误的?我也遇到了类似的问题。https://dev59.com/ZHfZa4cB1Zd3GeqPPDop - Fahim Parkar
@FahimParker 基本上,TextView 超出了包含它的 View。例如,如果您将 TextView 添加到大小为(0,0,100,100)的视图中,则如果我告诉 TextView 去(150,150,100,100),它仍会显示在屏幕上,因为它在 iPhone 屏幕的边界内。但是,如果 TextView 不在其添加到的 UIView 的边界内,它将不响应触摸事件。基本上,我所做的就是调整其父视图的大小,以使 UITextview 始终保持在边界内。 - Alan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接