В качестве альтернативы принятому ответу это можно сделать очень легко в XCode с помощью Interface Builder.
Просто перетащите Распознаватель жестов длинного нажатия из Библиотеки объектов и перетащите его поверх кнопки, где вы хотите длительное нажатие.
Затем подключите действие из только что добавленного распознавателя жестов длительного нажатия к контроллеру вида, выбравотправитель типа UILongPressGestureRecognizer
.В коде этого IBAction
используйте это, что очень похоже на код, предложенный в принятом ответе:
В Objective-C :
if ( sender.state == UIGestureRecognizerStateEnded ) {
// Do your stuff here
}
Или в Swift :
if sender.state == .Ended {
// Do your stuff here
}
Но я должен признать, что после попытки я предпочел предложение, сделанное @shengbinmeng, в качестве комментария к принятому ответу, который должен был использовать:
В Objective-C :
if ( sender.state == UIGestureRecognizerStateBegan ) {
// Do your stuff here
}
Или в Swift :
if sender.state == .Began {
// Do your stuff here
}
Разница в том, что сEnded
, вы видите эффект длительного нажатия, когда поднимаете палец.С Began
вы увидите эффект длительного нажатия, как только система поймает длительное нажатие, даже до того, как вы уберете палец с экрана.