Мое приложение имеет два наложения UIButtons. Главная кнопка может время от времени отключаться. Однако в этом случае любые сенсорные события, которые это получает, кажется, передаются к базовому представлению, которое в моем случае является другой кнопкой.
То, в чем я нуждаюсь, является главной кнопкой, прерывающей все касания и препятствующей тому, чтобы они достигли нижней кнопки, даже в нерабочем состоянии (я был бы счастлив, даже если это определяло действие, вызывается в нерабочем состоянии).
До сих пор я попробовал:
[topButton setUserInteractionEnabled:YES];
и
[topButton setExclusiveTouch:YES];
хотя более поздний случай является, вероятно, нежелательным, так как мне все еще нужны нижние события ответа кнопки, если это - первое нажатое представление. Так или иначе ни один из них не работает.
Создать подкласс кнопки, а затем переопределить эти методы так, чтобы кнопка перехватывала события, но игнорировала их, если какое-либо свойство кнопки установлено на NO:
touchesBegan:withEvent:
touchesCancelled:withEvent:
touchesEnded:withEvent:
touchesMoved:withEvent:
Это методы UIResponder.
Пусть они просто вызовут свой [супер ...] метод, если вы хотите, чтобы событие было обработано, в противном случае просто не вызывайте его и не возвращайте, если вы хотите, чтобы события "съели".
Также смотрите это, если это необходимо: Наблюдение за многосенсорными жестами в UITableView