在我的应用程序中,我使用覆盖样式来展示帮助信息。在工具栏中点击Info按钮会将一个UIButton叠加在当前主视图之上。它会绘制一张带有帮助文本和箭头的图片,指向当前导航栏和工具栏中的各个用户界面元素。
如果再次点击Info按钮,则会销毁UIButton,并且如果用户触摸了这个叠加的按钮,我也想要将其消除。这个功能运行得非常完美,但是对于我的主视图控制器——一个UITableViewController,它无法正常运行。
我的做法是创建一个UIButton并将其添加为UITableViewController中唯一的视图——UITableView的子视图。然后,我设置它来处理所有的触摸事件:
在转向
这不应该是很难实现的,我错过了什么?
如果再次点击Info按钮,则会销毁UIButton,并且如果用户触摸了这个叠加的按钮,我也想要将其消除。这个功能运行得非常完美,但是对于我的主视图控制器——一个UITableViewController,它无法正常运行。
我的做法是创建一个UIButton并将其添加为UITableViewController中唯一的视图——UITableView的子视图。然后,我设置它来处理所有的触摸事件:
[[self masterInfoView] addTarget:self action:@selector(toggleMasterInfo:) forControlEvents:UIControlEventAllTouchEvents];
UIButton
的大小与它现在覆盖的表格视图相同,如果我点击它,它会消失,但是如果我进行滚动手势(在其中按住我的手指),按钮不会将此视为触摸事件,相反,底层的表格视图处理它并滚动其行,同时移动按钮。在转向
UIButton
之前,我使用UIView
和各种手势识别器来实现相同的功能,以及捕获UIResponder
事件,如touchesBegan:withEvent:
,都有合理的结果,但没有完美的解决方案。这不应该是很难实现的,我错过了什么?
UIButton
不是我在表视图中返回行的一部分。相反,它重叠整个表格,显示整个屏幕的帮助信息,并且一旦被点击,它应该消失。简单地点击它可以正常工作,但是滚动操作会滚动底层的表视图,这也会将我的按钮向上或向下移动。 - Richard Altenburg - Brainchild