Отмените касание UIButton при касании

У меня есть ситуация, когда пользователь будет касаться UIButton, и, хотя они уже могут касаться его, мне нужно иметь возможность отменить его или заставить его потерпеть неудачу.

Я попытался использовать button.enabled и userInteractionEnabled, но никто не работает «на лету». Оба должны быть установлены до начала касания.

Могу ли я заставить кнопку сбой после и во время ее касания?

5 Solutions collect form web for “Отмените касание UIButton при касании”

Вам нужно зарегистрировать два действия для вашей кнопки, один для прикосновения и один для прикосновения. В касании вниз вы можете решить, хотите ли вы отменить и направить вверх, чтобы записать фактическую логику для нажатия кнопки.

[button addTarget:self action:@selector(touchDown:) forControlEvents:UIControlEventTouchDown]; - (IBAction)touchDown:(id)sender { UIButton *b = (UIButton*)sender; // Call this if you wish to cancel the event tracking [b cancelTrackingWithEvent:nil]; } 

Одна вещь, которую вы можете решить, чтобы решить вашу проблему, – это настроить нажатый внешний вид кнопки в соответствии с вашими потребностями. Использование: – setBackgroundImage:@"NormalStateImage.png" forState: UIControlStateNormal – setBackgroundImage:@"HighlightedStateImage.png" forState: UIControlStateHighlighted

установите свойство adjustsImageWhenHighlighted в НЕТ, а свойство adjustsImageWhenDisabled – НЕТ

Это можно сделать для любого UIButton . Если вы хотите отменить кнопку, нажмите в то время, когда пользователь коснется ее, эти действия должны работать:

  1. Настройте обработчик событий, в которых необходимо проверить отмену. В этом случае, когда кнопка не работает.

    [yourButton addTarget: само действие: @selector (buttonIsDownHandler 🙂 forControlEvents: UIControlEventTouchDown];

  2. В обработчике определите, следует ли отменить печать

    – (IBAction) buttonIsDownHandler: (id) отправитель {if (needToCancelThisPress) {[yourButton cancelTrackingWithEvent: nil]; }}

  3. После UIControlEventTouchCancel будет вызываться обработчик кнопки для UIControlEventTouchCancel .

Отмена кнопки при нажатии может быть выполнена в любое время. Например, если вы хотите отслеживать, когда пользователь нажимает и удерживает слишком долго, вы можете запустить таймер в обработчике UIControlEventTouchDown , а затем отменить касание, когда истечет таймер.

Просто используйте переменную BOOL, которая указывает на то, что действие кнопки разрешено или нет, и проверьте, где это необходимо. Enabled и userinteractionenabled – это просто отключить прикосновения вообще

Не уверен в вашей проблеме, но вы можете иметь разные действия на основе контрольного события, как показано ниже.

 [button addTarget:self action:@selector(onTouchUpInside:) forControlEvents:(UIControlEventTouchUpInside)]; [button addTarget:self action:@selector(onTouchDown:) forControlEvents:(UIControlEventTouchDown)]; [button addTarget:self action:@selector(onTouchUpOutside:) forControlEvents:(UIControlEventTouchUpOutside)]; 

Пожалуйста, извините меня, если это не поможет или что вы ищете.

  • UIButton не работает в uiscrollView
  • Пользовательская ячейка с тремя кнопками (со значком) в объективе c
  • Выравнивание текста и изображения на UIButton с помощью imageEdgeInsets и titleEdgeInsets
  • Прикосновение UIButton задерживается, когда в UIScrollView
  • UIView alpha = 0 вызывает отбрасывание касаний к виду ниже
  • Длительное нажатие и однократное нажатие кнопки
  • Как перейти от одного контроллера к другому контроллеру просмотра нажатием кнопки?
  • Ручная настройка состояния UIButton
  • Messing UIButton в каждом UICollectionViewCell в прокручивающемся диалоговом окне
  • UIButton не отвечает в нижней части экрана на iPad
  • Как установить цвет aUIButton?
  • Interesting Posts

    Сжатие ios видео с AVSession

    Уведомление push-оповещения Firebase IOS не работает, когда приложение закрыто

    IOS 9 NSURLConnection устарел

    iOS7 сбой при регистрации для удаленных уведомлений

    Изменение цвета задней панели для UIPageViewController

    iOS Simulator отменяет настройку местоположения

    широта и долгота от MKPolyline

    Swift CoreData: ошибка: не удалось вызвать назначенный инициализатор в классе NSManagedObject 'NSManagedObject'

    Установка фиксированной высоты для iOS8 сегодня с использованием автоматической компоновки

    Возможно ли, что UITableViewController скрывает свои ячейки до тех пор, пока не будет содержимое, и пока покажет сообщение «без содержимого»?

    iOS SDK: перемещение кнопки в центр экрана по коду

    Только UIScrollView AutoLayout только для вертикали

    Извлеките высоту пользовательских прототипов из раскадровки?

    Запросить разрешение фотобиблиотеки на ios, вызвавшую сбои часов?

    Запустить приложение в iOS 6 Simulator в Xcode 6

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.