Всплывающее окно, похожее на завершение кода Xcode? - PullRequest
5 голосов
/ 19 октября 2011

Я хотел бы создать нечто похожее на функцию завершения кода в Xcode 4. (Визуальный стиль и поведение, а не тип структуры данных работают для завершения кода).

Поскольку пользователь печатаетво всплывающем окне представлены другие варианты выбора слов.

Функция в действии:

Code-Completion window in action.

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

В основном я ищу обзор того, как отображать такие данные в «окне», и как настроить внешний видтак что это выглядит как небольшое информационное всплывающее окно, а не как полнофункциональное окно OS X.

Ответы [ 2 ]

3 голосов
/ 16 февраля 2012

Просто добавьте подпредставление к вашему текущему представлению, которое оказывается табличным представлением .Программно сделайте так, чтобы оно было видимым на событии (например, mouseDown), и отрегулируйте его положение в зависимости от того, где вы хотите.Вам нужно будет создать соответствующие методы делегата / источника данных, но это должно быть довольно просто. Вам также понадобится источник для слов, которые вы хотите использовать в автозаполнении, и поместите их в массив или что-то еще, чтобы источник данных tableview прошел через .

Как я уже сказал,не очень сложно, если вам удобно использовать табличные представления и добавлять представления к существующему представлению.Если это не объясняет достаточно, оставьте комментарий, и я могу дополнить этот комментарий.

0 голосов
/ 16 февраля 2012

Добавьте (дополнения) подпредставление к вашему представлению и установите для его свойства visible значение NO. Создайте отдельный объект автозаполнения, который включает подпредставление как свойство и заполняет его потенциальными дополнениями. Контроллер может реагировать на события нажатия клавиш (набранные клавиши) и передавать последнее слово (подстроку текста от конца до 1-го предшествующего пробела) автозаполнению для каждого события. Основная логика в автозаполнении может быть что-то вроде:

Дано автозаполнение со списком известных слов "собака, спагетти, минута, лошадь, запасной, скорость" Когда попросили завершить фрагмент "sp" Затем следующие слова должны быть предложены в качестве потенциальных дополнений: «спагетти, запасные, скорость»

Что подразумевает, что вам нужно создать экземпляр списка слов (это можно сделать в инициализации вашего контроллера) и создать метод "- (NSArray *) completeFragment: (NSString *) фрагмент;". Вы можете оставить это в тестовом примере OCUnit и выполнить итерацию по реализации автозаполнения, пока не получите правильное решение. Затем вы должны написать метод, который берет дополнения из автозаполнения и перечисляет их в подпредставлении. Еще лучше, если вы создадите свойства currentWord и потенциальные компоненты в автозаполнении, которые обновляются по мере отправки «newFragment: (NSString *) фрагмент;» Сообщения. Добавьте это в OCUnit и поработайте, а затем используйте это свойство потенциальные возможности для обновления обновленного подпредставления (которое, вероятно, лучше всего смоделировать как пользовательский табличный вид).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...