在UIButton其他的类,还有很多UIControl子类可以有迷上了他们许多行动.
当我们将界面构建器中的操作连接到源代码文件时,如果我们打开"事件"下拉列表,我们会看到一长串选项:

几乎在每种情况下,我们都只是将行动挂钩到"Touch Up Inside".这允许用户考虑他们是否想要真正按下按钮.如果他们在放开之前将手指从按钮上移开,则动作不会触发,因为"向上触摸"手势发生在对象的边界之外.
但在这里,我们希望实际上将按钮的"触地"事件挂钩.这是我们显示标签的时候.
让我们继续创建一个"触地"事件和"内部触摸"事件:
@IBAction func buttonTouchDown(sender: UIButton) {
self.myLabel.hidden = false
}
@IBAction func buttonTouchEnded(sender: UIButton) {
self.myLabel.hidden = true
}
Run Code Online (Sandbox Code Playgroud)
- (IBAction)buttonTouchDown:(UIButton *)sender {
self.myLabel.hidden = NO;
}
- (IBAction)buttonTouchEnded:(UIButton *)sender {
self.myLabel.hidden = YES;
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,buttonTouchEnded设置完全正常,并buttonTouchDown通过从"事件"列表中选择"触摸"来设置.
我们总是可以通过在界面构建器中右键单击它来验证我们的控件连接到了什么:

但是这个菜单不仅仅是简单地检查我们已经连接的东西.从这里开始,只需单击圆圈并拖动到现有方法,我们就可以将任何其他操作@IBAction与现有方法联系起来.
因此,如果我们停止按下按钮,我们显然希望标签消失,正常的修饰就像你连接任何其他按钮一样.剩下的唯一问题是,你想要什么样的行为?
如果你想让标签在手指抬起时消失,无论手指在哪里,我们还必须勾起"向外触摸".
如果您希望当用户将手指从按钮上移开时标签消失,那么我们应该连接"触摸拖动退出"操作.
我们也可能想要联系"触摸取消"动作,如果某种系统事件(可能是来电)取消触摸,就会发生这种情况.
此Stack Overflow回答详细阐述了我们所拥有的操作选项之间的差异,因此您可以准确地根据需要制定行为.
无论如何,一旦我们决定了哪些操作我们想要连接到哪些方法,请调出右键单击菜单并从圆圈中单击并拖动到方法:
