2015-10-07 2 views
0

Я делаю customkeyboard, он имеет почти 30 кнопок. И я использую событие multi-touch, чтобы проверить, какая кнопка выбрана или коснуться. Мой способ обнаруживает текущее положение пальца и сравнивается с положением кнопки.Самый быстрый способ обнаружить прикосновения движений над UIView?

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

Любой более быстрый способ проверить касание касания касательно 1 UIView или UIButton?

ответ

0

Для кнопок с клавиатурой вам необходимо переопределить метод UIView touchBegan и touchs.Ended. Приступая к запуску, вызывается, когда прикосновение попадает в рамку кнопок, а касания заканчиваются, когда сенсорный экран выходит из рамки кнопок. Никакого сравнения координат не требуется.

class MyButton: UIButton { 

    override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) { 

     //Button presses 

    } 

    override func touchesEnded(touches: Set<NSObject>, withEvent event: UIEvent) { 

     //Button unpresses 

    } 
} 

Обратите внимание, что существует метод, известный как touchsMoved, который может быть переопределен в любом UIView. Эта функция называется любым касанием времени. Вам необязательно проверять любое нажатие кнопки при нажатии кнопки, только когда начинается касание и выйдет из кнопки, поэтому вы не должны использовать метод touchhesMoved в этом случае.

+0

Я пробовал этот путь, но это не сработало. Вы когда-нибудь замечали о клавиатуре iOS? Если вы прикасаетесь в любом месте на клавиатуре и двигаете пальцем, если ваш палец находится в положении любой кнопки, вы увидите всплывающее окно. Чтобы сделать это, я думаю, мне нужно отключить userInteractionEnabled в каждой кнопке и поймать touchhesmoved даже на клавиатуре. – TomSawyer

+0

Возможно, и если это не работает, попробуйте отключить взаимодействие с пользователем, но сделайте предложенный мной метод ... Я не уверен, почему это не сработает. – YungGun

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