3

在我的应用程序中,我使用叠加样式来呈现帮助信息。点击工具栏中的信息按钮会覆盖UIButton在我当前主视图的任何视图之上。它绘制带有帮助文本和箭头的图像,指向当前导航栏和工具栏中的各种用户界面元素。

再次点击 Info-button 会处理UIButton,但如果用户触摸这个覆盖的按钮,我也想摆脱它。除了我的主视图控制器,它是一个UITableViewController.

我所做的是创建UIButton并将其添加为UITableView我的主视图控制器中唯一的视图的子视图。然后我将其设置为处理所有触摸事件:

[[self masterInfoView] addTarget:self action:@selector(toggleMasterInfo:) forControlEvents:UIControlEventAllTouchEvents];

与它现在覆盖的UIButton表格视图具有相同的大小,并且它会在我点击它时消失,但是如果我做出滚动手势(在其中点击并按住我的手指),按钮不会将此视为触摸事件,相反,底层表视图处理它并滚动其行,同时移动按钮。

在转到 a 之前,UIButton我使用 aUIView和各种手势识别器来实现相同的目标,并捕获诸如 之UIResponder类的事件touchesBegan:withEvent:,所有这些都具有合理的结果,但并不完美。

完成这项工作并不难,我错过了什么?

4

3 回答 3

0

要访问表格单元格的任何子视图,请按照以下步骤操作。

1.Use the TableView delegate function of "didSelectRowAtIndexPath".
2.By above function you can get the particular index path of tabelcell.
3.Create a local object of any subview using tag value like below.

 UIButton *mybutton=(UIButton *)[[tableView cellForRowAtIndexPath:indexPath] viewWithTag:222];
于 2013-01-23T13:02:52.510 回答
0

我试图这样做,最后我发现您需要在将单元格返回给表数据源委托时设置操作。

[customButton addTarget:self action:@selector(/*functio name*/:) forControlEvents:/*event name*/]

;

我希望这对你有用。

于 2012-09-22T15:04:22.200 回答
0

我决定,因为我的主要问题是由于我的帮助文本覆盖视图下方的表格视图会持续滚动,即使我不想要它,我不妨使用它:

[[self tableView] setScrollEnabled:NO];

只要帮助覆盖视图 (my UIButton) 处于活动状态。一旦覆盖消失,我重新启用我的表格视图的滚动。

它现在确实解决了我的问题,但它仍然没有告诉我如何防止滚动事件通过我的叠加层并进入表格视图。这可能是因为我将叠加层添加为表格视图的子视图。我可能应该制作一个包含表格视图的容器视图,以避免将来发生这种情况(正如 Mahmoud Fayez 以某种方式建议的那样)。

于 2012-09-22T17:12:53.260 回答