两个按钮,一键
Posted
技术标签:
【中文标题】两个按钮,一键【英文标题】:Two buttons, one click 【发布时间】:2013-08-07 21:12:33 【问题描述】:我的笔尖上有两个相互重叠的按钮。我需要在点击时按下它们,但只有顶部按钮执行其功能。有没有办法让顶部按钮在按下顶部按钮时告诉底部按钮激活。我不认为我可以将按钮合并为一个并使用一个 -(IBAction)buttonName 功能,因为一个按钮比另一个大,所以当按下其中一个按钮时,我并不总是需要同时激活两个按钮。
谢谢!
【问题讨论】:
首先,为什么你的两个按钮是叠在一起的? 这没有回答“为什么?”。 是的,但是为什么? (你想达到什么效果?)如果没有比堆叠按钮更整洁的解决方案,我会感到惊讶,尽管@Caleb 的回答会解决你的问题。 底部按钮是改变显示内容的整个屏幕。顶部按钮播放声音,但顶部有 4 个按钮播放不同的声音 将整个屏幕变成一个按钮有点奇怪(例如,您可以通过touchesBegan:...
等在视图本身上捕获点击),但我想如果它有效,它就有效。
【参考方案1】:
有没有办法让顶部按钮告诉底部按钮 按下顶部时激活。
并非如此,但您可以让顶部按钮的操作调用底部按钮的操作。
这是一种方法:
- (IBAction)actionTop:(id)sender
NSLog(@"The top button was activated.");
[self actionBottom:self];
- (IBAction)actionBottom:(id)sender
NSLog(@"The bottom button was activated.");
另一种方法是对两者使用相同的操作,并根据触发该操作的按钮确定要做什么:
- (IBAction)action:(id)sender
// if the top button was tapped, do this part
if (sender == self.topButton)
NSLog(@"The top button was activated.");
// you want the bottom button to be activated no matter which button was tapped, so
// no need to check here...
NSLog(@"The bottom button was activated.");
底部按钮是改变显示内容的整个屏幕。 顶部按钮播放声音,除了有 4 个顶部按钮 播放不同的声音
似乎覆盖整个屏幕的隐形按钮可能是解决问题的错误方法。您可能会考虑使用附加到您的视图的手势识别器来触发更改。您的按钮操作可以调用手势识别器使用的相同方法。
【讨论】:
你不需要在某处使用 if 语句,以便底层知道何时执行其功能 @GregM 如果您使用我的第一个示例,您只需将actionTop:
设置为顶部按钮的操作,将actionBottom:
设置为底部按钮的操作。如果点击顶部按钮,它的动作会做它需要做的任何事情,然后触发底部动作。如果点击底部按钮,它只会触发底部动作。
我之前没有使用 (id)sender,我只是使用了 -(IBAction)actionTop,这有什么不同吗?
sender
参数是可选的。如果您不需要 sender
,则没有什么区别,但如果您需要(如我的第二个示例),您可以包含它。
对不起,我不擅长这个,对于上面的例子,它说没有可见的@interface 声明选择器“actionBottom”【参考方案2】:
由于一个按钮比另一个大,我假设您希望较小的按钮与它一起“降低”较大的按钮,包括视觉状态的变化。在这种情况下,您可以send your target button a "tap" programmatically,如下所示:
- (IBAction)largeButtonClick:(id)sender
- (IBAction)smallButtonClick:(id)sender
// Perform the acton specific to only the small button, then call
[largeButton sendActionsForControlEvents:UIControlEventTouchUpInside];
【讨论】:
以上是关于两个按钮,一键的主要内容,如果未能解决你的问题,请参考以下文章