ios - 如何在按下按钮时切换隐藏标签?

标签 ios uibutton uikit uilabel

我想弄清楚如何在操作系统中按下按钮时只显示标签。我知道如何操作触摸事件,但我不确定如何将 UILongPressGestureRecognizer 合并到其中。

最佳答案

UIButton 类以及许多其他 UIControl 子类可以关联许多操作。

当我们将一个 Action 从界面构建器连接到我们的源代码文件时,如果我们打开“事件”下拉菜单,我们会看到一长串选项:

Choosing IBAction event

在几乎所有场景中,我们都只将我们的 Action Hook 到“Touch Up Inside”。这允许用户考虑他们是否真的想要按下按钮。如果他们在放手之前将手指从按钮上拖开,则不会触发操作,因为“向上触摸”手势发生在对象边界之外。

但在这里,我们实际上想要连接按钮的“触地”事件。这是我们显示标签的时候。

让我们继续创建一个“touch down”事件和一个“touch up inside”事件:

swift

@IBAction func buttonTouchDown(sender: UIButton) {
    self.myLabel.hidden = false
}

@IBAction func buttonTouchEnded(sender: UIButton) {
    self.myLabel.hidden = true
}

objective-C

- (IBAction)buttonTouchDown:(UIButton *)sender {
    self.myLabel.hidden = NO;
}

- (IBAction)buttonTouchEnded:(UIButton *)sender {
    self.myLabel.hidden = YES;
}

至此,buttonTouchEnded设置完全正常,buttonTouchDown设置为从“Event”列表中选择“touch down”。

我们始终可以通过在界面构建器中右键单击它来验证我们的控件连接到什么:

Button sent events

但是这个菜单不仅仅用于检查我们已经连接的内容。从这里,我们可以将任何其他操作连接到我们现有的 @IBAction 方法,只需单击圆圈并拖动到现有方法即可。

所以我们显然希望标签在我们停止按下按钮时消失,这是一种正常的修饰,就像您连接任何其他按钮一样。剩下的唯一问题是,您想要什么样的行为?

如果想让标签只在手指抬起时消失,不管手指走到哪里,那我们还必须勾上“touch up outside”。

如果您希望标签在用户将手指拖离按钮时消失,那么我们应该连接“触摸拖动退出” Action 。

我们可能还想连接“触摸取消”操作,如果某种系统事件(可能是来电)取消触摸,就会发生这种情况。

This Stack Overflow answer详细说明了我们拥有的操作选项之间的差异,因此您可以根据需要准确地设计行为。

无论如何,一旦我们决定要将哪些操作连接到哪些方法,请调出右键单击菜单并从圆圈中单击并拖动到方法:

Hooking up "Touch Cancel" to buttonTouchEnded(sender:)

关于ios - 如何在按下按钮时切换隐藏标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30743959/

相关文章:

ios - 解析 : Error 102 when querying an array of pointers

ios - 我想当用户选择 "Others"行时更改 UIlabel 的文本

ios - 保存iPhone应用程序的视频截屏

ios - 单击 UIButton 时没有任何反应

iphone - 在 UIView 中绘制线条动画

ios - instantiateViewController(withIdentifier :) vs ViewController(nibName:bundle:)?) 之间有什么区别

ios - 触摸在 UIButton Action 中的位置

ios - 将手指拖离 UIView 时取消选择 UIView "button"

iphone - 有没有办法检索每个处理过 UITouch 的响应者?

ios - 带有圆角边缘的空按钮