2012-06-03 3 views
1

РЕШЕННЫЙ - Пожалуйста, обратите внимание на ответ Даррена для разрешения этой проблемы.iPhone: кнопка Touch Events - освободить не стрелять?

Здравствуйте, и спасибо, что нашли время, чтобы прочитать мой вопрос.

Я испытываю некоторое нечетное поведение при обнаружении освобождения IBAction UIButton: Когда я перемещаю ладонь по интерфейсу, нажатие кнопки обнаруживается, но освобождение не происходит!

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

- (IBAction)up1start:(id)sender 
{ 
    if(!buttonIsPressed && deviceIsConnected) 
    { 
     NSLog(@"BUTTON UP 1 PRESSED!"); 
     NSString *byteString = @"7E 01"; 
     sendTimer =[NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(sendByte:) userInfo:byteString repeats:YES]; 
     buttonIsPressed = true; 
    }else{ 
     NSLog(@"Cant press two buttons or connection is closed"); 
    } 
} 
- (IBAction)up1stop:(id)sender 
{ 
    NSLog(@"BUTTON UP 1 RELEASED!"); 
    [ self buttonRelease ]; 
} 

я следующие события привязаны к UIButton up1 - вероятно, больше, чем необходимо из-за мои постоянные усилия по устранению неисправностей:

  • Touch Down - up1start
  • Нажмите Drag Выход - up1stop
  • Для Уч Drag Вне - up1stop
  • Touch Up Inside - up1stop
  • Touch Up Снаружи - up1stop

Я хочу немного тупик здесь о том, как ни одно из этих событий, в результате моего " up1stop ". Опять же, я могу воспроизвести эту проблему, нажав ладонь на интерфейс, а затем отпустив или слегка двигаясь. Для записи у меня есть с включенной функцией exclusiveTouch для каждой кнопки.

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

Может ли кто-нибудь объяснить, почему отмена кнопки не обнаруживается, когда я «ладонирую» экран?

Cheers!

+0

Устраняет ли метод up1stop, когда вы просто нажимаете кнопку, а не ладонью? – Msencenb

+0

@Msencenb - Это действительно так. Все работает безупречно, за исключением этой маленькой ошибки, где я могу, по-видимому, сломать приложения, понимая, какое действие я выполняю. Я выбрал ответ ниже, который оказался решением, которое я искал. По интерфейсу «palming» приложение интерпретировало мое действие как «Press Down», затем «Scroll», в результате чего ни одно из событий, которые я уже вложил в себя, не был запущен. Добавляя 'UIControlEventTouchCancel' к каждому действию' stop', проблема была решена. –

ответ

5

Вы хотите отслеживать событие UIControlEventTouchCancel.

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

+0

Спасибо за ваш оперативный и информативный ответ!Я проверю это сейчас и отправлю обратно с результатами! –

+0

Большое вам спасибо! Это сработало ** отлично **! Я подключил 'UIControlEventTouchCancel' к соответствующим действиям' Release', теперь кнопки больше не вставляются! Ура! Мне нужно собрать некоторую репутацию, чтобы я мог должным образом поблагодарить вас за помощь в этом вопросе :) –

+0

+ rep для быстрого и спот-ответа, еще раз спасибо! –

Смежные вопросы