나는 AppKit.NSSearchField
을 사용 중이며 사용자가 입력하는 동안 검색 이벤트를 지연해야합니다 (예 : 2 초 후에 데이터를 필터링).NSSearchField를 입력하는 동안 검색을 지연하는 방법
인터페이스 작성기에서 '작업 끝내기 편집'작업을 추가했지만 입력하는 동안 너무 자주 호출됩니다. 사용자가 입력하는 동안 지연 시간을 늘릴 수있는 기본 방법이 있습니까?
나는 AppKit.NSSearchField
을 사용 중이며 사용자가 입력하는 동안 검색 이벤트를 지연해야합니다 (예 : 2 초 후에 데이터를 필터링).NSSearchField를 입력하는 동안 검색을 지연하는 방법
인터페이스 작성기에서 '작업 끝내기 편집'작업을 추가했지만 입력하는 동안 너무 자주 호출됩니다. 사용자가 입력하는 동안 지연 시간을 늘릴 수있는 기본 방법이 있습니까?
당신은 디 바운싱라는 기술을 사용합니다. 그 아이디어는 다소 만료 된 지연 후에 액션의 내부에서 ("끝 편집 중"에 연결 한) 메소드를 실행하는 것입니다. 새로운 키를 누를 때마다 지연 시간이 고정 된 타이머가 재설정됩니다. 사용자가 입력을 계속할 때까지 검색은 실행되지 않습니다. 그가 멈 추면 마지막 디 바운스 타이머가 꺼지고 검색이 끝납니다. 여기
더 많은 정보 : How can I debounce a method call?
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
@ Nininea 코드를 고정 할 때 코드가 올바르게 작동합니다. 1 초 지연으로 예제를 만들었습니다 : https://github.com/emankovski/DebouncedSearch –
당신은 최종 편집에 해고 할 타이머를 사용 할 수있다. 그런 다음 셀렉터 검색을 실행하면됩니다. (지연, 대상 : 셀프 선택기 : # 선택기 (검색), userInfo : nil, 반복 : false) – Irfan
답변을 주셔서 감사합니다. @ Irfan 그래서,해야합니다. 사용자 정의 지연을 추가,이 컨트롤에 대한 지연 시간을 늘릴 수 없습니다? – Nininea
나는 그 사건이 "최종 편집 중"이라는 이유로 꽤 확신하고 있습니다. 그렇지 않으면 "지연된 편집 끝에"와 같이 호출됩니다. – Irfan