Ios 如何向这些按钮添加长键和轻触手势?
我有一个有6个按钮的屏幕。所有按钮都连接到一个Ios 如何向这些按钮添加长键和轻触手势?,ios,swift,uigesturerecognizer,Ios,Swift,Uigesturerecognizer,我有一个有6个按钮的屏幕。所有按钮都连接到一个iAction。它们被标记,我使用switch语句来确定哪一个被点击 如何在每个按钮上添加长时间点击手势?例如,当我点击按钮1时,它知道这是一个长手势还是一个点击手势 因此,如果我点击按钮,那么当我长按时,会做一些不同的事情 谢谢 @IBAction func playPauseAudioButton(sender: UIButton) { switch sender.tag { case 1: //Tap Ges
iAction
。它们被标记,我使用switch语句来确定哪一个被点击
如何在每个按钮上添加长时间点击手势?例如,当我点击按钮1时,它知道这是一个长手势还是一个点击手势
因此,如果我点击按钮,那么当我长按时,会做一些不同的事情
谢谢
@IBAction func playPauseAudioButton(sender: UIButton) {
switch sender.tag {
case 1:
//Tap Gesture
//Long Gesture
//I need this for every button
print("1")
case 2:
print("2")
case 3:
print("3")
case 4:
case 5:
print("5")
case 6:
print("6")
default:
print("Default")
}
}
像这样做
@IBAction func playPauseAudioButton(sender: AnyObject) {
let tapGesture = UITapGestureRecognizer(target: self, action: "normalTap:")
let longGesture = UILongPressGestureRecognizer(target: self, action: "longTap:")
tapGesture.numberOfTapsRequired = 1
sender.addGestureRecognizer(tapGesture)
sender.addGestureRecognizer(longGesture)
}
func normalTap(sender : UIGestureRecognizer) {
let recognizer: UIGestureRecognizer = sender
let tag: Int = recognizer.view!.tag
switch tag {
case 1:
// Do some action for button 1
print("1")
case 2:
print("2")
case 3:
print("3")
case 4:
print("4")
case 5:
print("5")
case 6:
print("6")
default:
print("Default")
}
}
func longTap(sender : UIGestureRecognizer) {
let recognizer: UIGestureRecognizer = sender
let tag: Int = recognizer.view!.tag
if sender.state == .Ended {
print("UIGestureRecognizerStateEnded")
//Do Whatever You want on End of Gesture
}
else if sender.state == .Began {
print("UIGestureRecognizerStateBegan.")
//Do Whatever You want on Began of Gesture
}
switch tag {
case 1:
// Do some action for button 1
print("1")
case 2:
print("2")
case 3:
print("3")
case 4:
print("4")
case 5:
print("5")
case 6:
print("6")
default:
print("Default")
}
}
像这样做
@IBAction func playPauseAudioButton(sender: AnyObject) {
let tapGesture = UITapGestureRecognizer(target: self, action: "normalTap:")
let longGesture = UILongPressGestureRecognizer(target: self, action: "longTap:")
tapGesture.numberOfTapsRequired = 1
sender.addGestureRecognizer(tapGesture)
sender.addGestureRecognizer(longGesture)
}
func normalTap(sender : UIGestureRecognizer) {
let recognizer: UIGestureRecognizer = sender
let tag: Int = recognizer.view!.tag
switch tag {
case 1:
// Do some action for button 1
print("1")
case 2:
print("2")
case 3:
print("3")
case 4:
print("4")
case 5:
print("5")
case 6:
print("6")
default:
print("Default")
}
}
func longTap(sender : UIGestureRecognizer) {
let recognizer: UIGestureRecognizer = sender
let tag: Int = recognizer.view!.tag
if sender.state == .Ended {
print("UIGestureRecognizerStateEnded")
//Do Whatever You want on End of Gesture
}
else if sender.state == .Began {
print("UIGestureRecognizerStateBegan.")
//Do Whatever You want on Began of Gesture
}
switch tag {
case 1:
// Do some action for button 1
print("1")
case 2:
print("2")
case 3:
print("3")
case 4:
print("4")
case 5:
print("5")
case 6:
print("6")
default:
print("Default")
}
}
定义两个iAction并为每个iAction设置一个手势识别器。这样,您可以为每个手势执行两个不同的动作 您可以在interface builder中将每个手势识别器设置为不同的iAction
@IBAction func tapped(sender: UITapGestureRecognizer)
{
println("tapped")
//Your animation code.
}
@IBAction func longPressed(sender: UILongPressGestureRecognizer)
{
println("longpressed")
//Different code
}
通过没有界面生成器的代码
let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: "tapped:")
self.view.addGestureRecognizer(tapGestureRecognizer)
let longPressRecognizer = UILongPressGestureRecognizer(target: self, action: "longPressed:")
self.view.addGestureRecognizer(longPressRecognizer)
func tapped(sender: UITapGestureRecognizer)
{
println("tapped")
}
func longPressed(sender: UILongPressGestureRecognizer)
{
println("longpressed")
}
希望这对您有所帮助。定义两个iBaction,并为每个iBaction设置一个手势识别器。这样,您可以为每个手势执行两个不同的动作 您可以在interface builder中将每个手势识别器设置为不同的iAction
@IBAction func tapped(sender: UITapGestureRecognizer)
{
println("tapped")
//Your animation code.
}
@IBAction func longPressed(sender: UILongPressGestureRecognizer)
{
println("longpressed")
//Different code
}
通过没有界面生成器的代码
let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: "tapped:")
self.view.addGestureRecognizer(tapGestureRecognizer)
let longPressRecognizer = UILongPressGestureRecognizer(target: self, action: "longPressed:")
self.view.addGestureRecognizer(longPressRecognizer)
func tapped(sender: UITapGestureRecognizer)
{
println("tapped")
}
func longPressed(sender: UILongPressGestureRecognizer)
{
println("longpressed")
}
希望这对您有所帮助。谢谢您的帮助!到目前为止,它似乎工作正常,但当我按下长手势时,数字打印两次?你知道为什么吗?这是因为
uiLongPressGestureRecognitor
有两种状态,开始和结束。我已经更新了代码,以便您可以选择要使用哪一个@JohnCarp。似乎还有另一个问题。当我第一次点击按钮时,它不工作。当我第二次点击它时,它就会工作?(点击手势)。长按按钮时,如果我按住按钮,它会一直打印号码。有没有办法解决这个问题?非常感谢!@Rashwan L所以我必须将每个按钮分别连接到一个插座上,并为每个按钮编写代码?同时,当我一直按住按钮时,它会一直向控制台写入代码。我如何防止它这样做?我只想让它在我按下它的时候做一次动作。比你强!谢谢你的帮助!到目前为止,它似乎工作正常,但当我按下长手势时,数字打印两次?你知道为什么吗?这是因为uiLongPressGestureRecognitor
有两种状态,开始和结束。我已经更新了代码,以便您可以选择要使用哪一个@JohnCarp。似乎还有另一个问题。当我第一次点击按钮时,它不工作。当我第二次点击它时,它就会工作?(点击手势)。长按按钮时,如果我按住按钮,它会一直打印号码。有没有办法解决这个问题?非常感谢!@Rashwan L所以我必须将每个按钮分别连接到一个插座上,并为每个按钮编写代码?同时,当我一直按住按钮时,它会一直向控制台写入代码。我如何防止它这样做?我只想让它在我按下它的时候做一次动作。比你强!我是否将这两个iBaction连接到同一个按钮?我是否将这两个iBaction连接到同一个按钮?