РЕШЕННЫЙ - Пожалуйста, обратите внимание на ответ Даррена для разрешения этой проблемы.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!
Устраняет ли метод up1stop, когда вы просто нажимаете кнопку, а не ладонью? – Msencenb
@Msencenb - Это действительно так. Все работает безупречно, за исключением этой маленькой ошибки, где я могу, по-видимому, сломать приложения, понимая, какое действие я выполняю. Я выбрал ответ ниже, который оказался решением, которое я искал. По интерфейсу «palming» приложение интерпретировало мое действие как «Press Down», затем «Scroll», в результате чего ни одно из событий, которые я уже вложил в себя, не был запущен. Добавляя 'UIControlEventTouchCancel' к каждому действию' stop', проблема была решена. –