2016-12-01 2 views
0

Я использую AppKit.NSSearchField и вам нужно отложить поисковое событие во время ввода пользователем, например, для фильтрации данных через 2 секунды.Как отложить поиск при вводе NSSearchField

Я добавил действие от конструктора интерфейса - «Редактирование конца», но он слишком часто вызывается при наборе текста. Есть ли какой-либо родной способ увеличить время задержки во время ввода пользователем?

enter image description here

+0

Вы можете использовать таймер, который будет срабатывать от дыбом редактирования. И затем, после этого, вы запускаете селекторный поиск. Что-то вроде этого: let delay = 2 // время в секундах NSTimer.scheduledTimerWithTimeInterval (delay, target: self, selector: #selector (search), userInfo: nil, repeat: false) – Irfan

+0

Спасибо за ответ @Irfan Итак, я должен добавить пользовательскую задержку, невозможно увеличить время задержки для этого элемента управления? – Nininea

+1

Я вполне уверен, что это так - как следует из названия, «по редактированию конца». В противном случае это можно было бы назвать чем-то вроде «редактирование конца с задержкой» :) – Irfan

ответ

2

Вы должны использовать технику под названием дребезга. Идея состоит в том, чтобы выполнить метод изнутри вашего действия (который вы подключили к «редактированию на конце») после некоторой истекающей задержки. Каждое новое нажатие клавиши вызывает сброс таймера, который имеет фиксированную задержку. Пока пользователь не будет печатать, поиск не будет выполняться. Как только он остановится, последний таймер отладки погаснет, и ваш поиск пройдет.

Более подробная информация здесь: How can I debounce a method call?

+0

this.timer? .Invalidate(); \t \t \t \t this.timerDetails = NSTimer.CreateScheduledTimer (NSConstants.SearchDelaSec, (OBJ) => { \t \t \t \t \t FilterData(); \t \t \t \t}); вот мое решение, но оно имеет проблемы. не работает должным образом – Nininea

+1

@Nininea Ваш код, когда исправлено немного, работает просто отлично. Я создал пример с 1 секундой задержки: https://github.com/emankovski/DebouncedSearch –

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