1

我目前正在开发具有这种结构的应用程序:

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

还有其他不可见的视图等等,所以 UITextView 不是第一个注册触摸的。

如何让 UITextView 在此配置中注册触摸?专门从 autoCorection 框中进行选择(实际上它用于日文汉字选择,但我认为它的机制类似)。

我试过了:

[canvasView.hiddenTextView touchesBegan:touches withEvent:event]

来自 MainViewController 的 touchesbegan 方法。我已经为 touchesBegan、moved 和 Ended 完成了此操作。

我认为它实际上适用于我尝试过的 50 次左右的运行中的一次,但我不知道发生了什么变化。

关于如何让它发挥作用的任何想法?

4

1 回答 1

0
[canvasView.hiddenTextView becomeFirstResponder];

可能会做你想做的事。

iPhone 上的响应者链是一件有点棘手的事情。我发现避免重叠控件通常更容易,因此在任何给定的情况下,哪个控件应该从哪个触摸接收输入是完全明确的。

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

当然,有时隐藏/显示比子类化要容易得多。

我希望这会有所帮助。参考:Apple 的UIResponder文档。(请注意,任何UIViewControllerorUIView都是 的子类UIResponder。)

于 2009-08-11T09:02:31.113 回答