UIButtons, создающие нативное поведение клавиатуры

Приветствует. Как-то подробное объяснение по моей проблеме, и что я уже сделал, а что не могу сделать.

Я хочу создать поведение, похожее на поведение клавиатуры iPhone. По сути, я хочу, чтобы представление появлялось, когда пользователь нажимает кнопку, и ПОКА пользователь нажимает эту кнопку.

Это я выполнил.

Когда пользователь отпускает кнопку, ПОКА его палец находится в области этой кнопки, я хочу вызвать действие «делать что-то».

Это я тоже смог сделать.

Поскольку все кнопки находятся рядом (как на клавиатуре), и я не хочу, чтобы пользователь выбирал другую кнопку, кроме той, которую он нажал, я уменьшил область нажатия кнопки с помощью -(BOOL)pointInside:( CGPoint)point withEvent:(UIEvent )event функция.

Когда пользователь нажимает кнопку, не поднимая палец и перетаскивая ее за пределы области кнопки, я хочу, чтобы срабатывало другое действие. Это первая проблема... Эта функция срабатывает только тогда, когда палец пользователя находится далеко от области кнопок, и на этот раз функция pointInside мне не подходит. Как я могу обнаружить, что палец пользователя «покинул» область кнопки в тот момент, когда она выходит за ее пределы?

Это, если ты не понял... была проблема 1.

Вторая проблема связана с перетаскиванием. Опять же, мне нужно ограничить область, как при выходе из перетаскивания. Но я предполагаю, что когда я решу одну из них, другая будет такой же. Проблема в том, что для того, чтобы вести себя как на клавиатуре, мне может потребоваться обнаружить, что пользователь начал прикосновение к другой кнопке, никогда не поднимал палец и перешел на другую кнопку. Я могу обнаружить вход и выход перетаскивания В ЭТОМ ПОРЯДКЕ, находясь на одной и той же кнопке. Я не могу обнаружить перетаскивание, когда пользователь впервые коснулся чего-либо, кроме кнопки, где я хочу обнаружить событие перетаскивания. В основном мне нужно обнаружить прикосновение к любой кнопке (а не где-либо еще в представлении), и пока пользователь меняет кнопки, не поднимая палец, я хочу обнаружить прикосновение к новой кнопке.

Этот гигантский абзац был проблемой №2.

Любая помощь, как вы могли догадаться, очень ценится.

Наилучшие пожелания. Большое спасибо!


person camilo    schedule 10.06.2010    source источник


Ответы (1)


Решено.

Я использовал собственный класс UIButton. Затем в

  • (void) touchesBegan: (NSSet *) touches withEvent: (UIEvent *) событие

  • (void) touchesMoved: (NSSet *) touches withEvent: (UIEvent *) событие

  • (void) touchesEnded: (NSSet *) touches withEvent: (UIEvent *) событие

Я проверяю, произошло ли касание в этом пользовательском UIButton. И если это так, я действую соответственно.

person camilo    schedule 11.06.2010
comment
Можете ли вы объяснить, как вы это сделали? У меня точно такая же проблема. - person Daniel G. Wilson; 25.09.2010
comment
Я сменил компанию. Я сейчас работаю по другой технологии. У меня нет кода. Извини, мой друг, больше ничем не могу тебе помочь. Но, насколько я помню, у касания есть позиция, и у всех представлений есть позиция... вы должны проверить, находится ли позиция касания внутри представления кнопки. Надеюсь, это помогло. - person camilo; 30.09.2010