Как предотвратить изменение состояния UISwitch?

У меня есть UISwitch, который определен в .xib файле. Событие, к которому я подключен, это "Value Changed".

Мне нужно следующее поведение (по сути, предупреждение пользователю, что эта функция доступна в полной версии программы):

  1. позволить пользователю нажать на переключатель
  2. не дать переключателю переместиться в положение "включено" (я хочу, чтобы переключатель оставался в положении "выключено")
  3. показать предупреждение

Пока что я не могу заставить 2 работать. Сейчас у меня есть одна хитрость. Я заставляю переключатель вернуться в положение OFF:

[self.switchButton setOn:NO animated:NO];

UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:@"Feature unlocked in Full Version" message:nil delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil] autorelease];
alert.tag = ALERT_TAG;
[alert show];

Проблема в том, что вы видите, как переключатель скользит в положение ON, затем он перескакивает в положение OFF, а затем вы видите окно предупреждения.

Есть ли способ перехватить поведение, чтобы переключатель не скользил в положение ON?

UPDATE

Я попытался привязаться к событию "TouchUpInside" и перенес туда свой код предупреждения. Это все еще недостаточно рано, чтобы перехватить визуальное изменение состояния переключателя.

9
задан milesmeow 2 January 2012 в 12:54
поделиться