пользовательская клавиатура iPhone - PullRequest
0 голосов
/ 08 августа 2010

Я создаю пользовательскую клавиатуру, скажем, с 10 кнопками UIB, расположенными в горизонтальном ряду. Кнопки охватывают ширину экрана, имеют одинаковый размер и должны располагаться вплотную друг к другу.

Я также хотел бы разрешить пользователю выбирать кнопку, проводя пальцем по ряду кнопок. Предварительный просмотр выбранной кнопки отображается в другом месте экрана. Предварительный просмотр обновляется, когда пользователь перемещает палец по строке. Когда пользователь доволен своим выбором, он отпускает палец, подтверждая выбор.

Очевидная вещь, которую нужно попробовать - это UICountrolEventDragExit или UIControlEventDragOutside, чтобы удалить действие предыдущей кнопки и UIControlEventTouchUpInside, чтобы активировать текущую кнопку и убить предыдущие события касания. Однако UICountrolEventDragExit и UIControlEventDragOutside активируются только тогда, когда пользователь перетаскивает достаточно далеко от данной кнопки. Так как мои пуговицы должны быть расположены вплотную друг к другу, это слишком далеко и недостаточно для меня.

Предложения

Ответы [ 3 ]

2 голосов
/ 08 августа 2010

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

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

0 голосов
/ 16 августа 2010

Звонок

</p> <p>-(void)touchesBegan:(NSSet <em>)touches withEvent:(UIEvent</em>)event;</p> <p>-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;</p> <p>-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;</p> <p>

разумно с видом, показывающим 10 UIImages (не UIButtons) также работает нормально.

0 голосов
/ 08 августа 2010

Если вы хотите 10-кнопочную «клавиатуру», я бы посмотрел на использование UISegmentedControl.Вы можете создать один с 10 сегментами каждый со своим собственным ключом и получить ключ, выбранный программно, как:

 segmentSelected = mySegmentControll.selectedSegmentIndex;
...