2016-12-01 8 views
0

나는 AppKit.NSSearchField을 사용 중이며 사용자가 입력하는 동안 검색 이벤트를 지연해야합니다 (예 : 2 초 후에 데이터를 필터링).NSSearchField를 입력하는 동안 검색을 지연하는 방법

인터페이스 작성기에서 '작업 끝내기 편집'작업을 추가했지만 입력하는 동안 너무 자주 호출됩니다. 사용자가 입력하는 동안 지연 시간을 늘릴 수있는 기본 방법이 있습니까?

enter image description here

+0

당신은 최종 편집에 해고 할 타이머를 사용 할 수있다. 그런 다음 셀렉터 검색을 실행하면됩니다. (지연, 대상 : 셀프 선택기 : # 선택기 (검색), userInfo : nil, 반복 : 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 –