两个按钮,一键

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];

【讨论】:

以上是关于两个按钮,一键的主要内容,如果未能解决你的问题,请参考以下文章

一键单击创建两个事件

两个按钮显示相同的 div。一键提供更多选项可见性

Python在PyQt中一键调用两个函数

一键显示两个图像。 PHP, AJAX

创建一个复选框,然后一键自动勾选所有其他复选框,并显示一个按钮

如何一键播放和暂停 - Android