iphone UITextView手动注册触摸

iphone UITextView手动注册触摸,iphone,uitextview,touch,Iphone,Uitextview,Touch,我目前正在开发一个具有以下结构的应用程序: 我有一个视图控制器,我们称之为MainViewController,它处理应用程序的所有触摸事件。 MainViewController有一个名为canvasView的视图作为实例变量。 canvasView有一个名为hiddenTextView的UITextView 还有其他不可见的视图,因此UITextView不是第一个注册触摸的视图 如何让UITextView在此配置中注册触摸?特别是从自动排序框中进行选择(实际上它是用于日文汉字选择的,但我假设

我目前正在开发一个具有以下结构的应用程序:

我有一个视图控制器,我们称之为MainViewController,它处理应用程序的所有触摸事件。 MainViewController有一个名为canvasView的视图作为实例变量。 canvasView有一个名为hiddenTextView的UITextView

还有其他不可见的视图,因此UITextView不是第一个注册触摸的视图

如何让UITextView在此配置中注册触摸?特别是从自动排序框中进行选择(实际上它是用于日文汉字选择的,但我假设它是一种类似的机制)

我试过:

[canvasView.hiddenTextView touchsbegined:touchswithevent:event]

从MainViewController的touchesBegind方法。我这样做是为了接触开始、移动和结束

我想在我试过的50次左右的跑步中,有一次确实有效,但我不知道是什么改变了

有什么办法可以让它工作吗

[canvasView.hiddenTextView becomeFirstResponder];
可能会做你想做的事

iPhone上的应答器链有点棘手。我发现通常更容易避免控件重叠,因此在任何给定的实例中,对于哪个控件应该接收来自哪个触摸的输入,都是完全明确的

如果您重叠了很多控件,并且经常在隐藏或可见的控件之间切换,这是一个很好的迹象,您可能希望实现更多的
UIViewController
子类,并在这些子类之间切换,而不是在控件和控件之间切换。另一种选择是创建
UIView
的自定义子类,并将这些子类进行交换——我的意思是,实际上从子视图中删除旧的子类(而不是隐藏它),然后添加新的子类

当然,有时隐藏/显示比子类化简单得多


我希望这有帮助。参考文献:。(请注意,任何
UIViewController
UIView
都是
UIResponder
的子类)

此时,UITextView已经是第一个响应者,但键盘已启动,一切正常。无论如何都试过了,但还是没有:(.我试过使用[[self nextResponder]touchesbeated…]同样,这在其他情况下也适用于我,将接触传递到其他层,但这次不行。另一个想法:仔细检查UITextView及其SuperView的框架。我有一个例子,我的控件清晰可见,但没有任何接触。问题是它的框架大小(0,0)。看起来,除非触摸在他们的框架内,否则响应者不会得到触摸。嘿,泰勒,谢谢你的回复。我最终只是将所有hiddenTextView内容移动到俯视图控制器,并确保hiddenTextView是最前面的子视图。然后UIResponder内容自行处理,并在使其成为第一响应者后,没有需要进一步的触摸转发。我希望UIKit API更透明一点:(很高兴你得到了它!如果我不能提供更快的修复,很抱歉。