Предотвратить изменение значения UISegmentedControl с помощью мультитач-жестов

У меня есть ряд сегментированных элементов управления, которые вызывают методы, когда происходит событие "Значение изменено".

Моя проблема заключается в том, что значения меняются, если пользователь выполняет мультитач-жесты, которые начинаются с элементов управления: смахивание четырьмя пальцами вверх (для переключения приложений) или сведение пяти пальцев (возврат на главный экран). Я пытался изменить методы, чтобы они реагировали только на события «Touch Up Inside», но сегментированные элементы управления по-прежнему изменяют значения с помощью жестов мультитач независимо.

Есть ли способ создать подкласс UISegmentedControl, чтобы UIControlEventValueChanged возникало только для элементов управления, если для отдельного сегмента есть событие «подправить внутри»?

Большое спасибо!


person SPM    schedule 07.09.2013    source источник


Ответы (1)


Проблема в том, что ваш UISegmentedControl отвечает на «UIControlEventValueChanged». Если вы хотите, чтобы ваш метод вызывался только при касании внутри, вместо этого пусть UISegmentedControl отвечает на «UIControlEventTouchUpInside». Вам не нужно создавать подклассы или переопределять что-либо.

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button addTarget:self action:@selector(yourMethod:)
 forControlEvents:UIControlEventTouchUpInside];

Доступные события управления находятся здесь: https://developer.apple.com/library/ios/documentation/uikit/reference/UIControl_Class/Reference/Reference.html

person dev574    schedule 07.09.2013