2014-11-05 5 views
0

UIMenuController를 사용하여 이미 내 앱에있는 데이터를 기반으로 텍스트 필드에 자동 완성 옵션을 표시하려고합니다. 메뉴 항목을 업데이트하고 선택한 텍스트 필드를 채우는 코드는 잘 작동하지만 입력하는 동안 menucontroller를 계속 볼 수있는 방법을 찾지 못하는 것 같습니다. 나는 시도했다입력하는 동안 UIMenuController가 계속 표시됩니다.

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
     [[UIMenuController sharedMenuController] setMenuVisible:YES animated:YES]; 
    return YES; 
} 

그러나 아무것도하지 않는다. 메뉴를 표시하도록 코드를 설정하기 전에 메뉴 항목을 업데이트하는 코드를 삽입하면 텍스트 필드의 첫 번째 문자를 계속해서 바꾸어 버리고 메뉴가 계속 표시되지 않습니다.

여기서 수정해야 할 실제 문제는 UIMenuController가 텍스트 필드의 마지막 단어를 자동으로 선택하는 것일 수 있지만 그 중 하나에 대한 해결 방법을 찾지 못했을 가능성이 있습니다.

답변

0

나는 그와 같은 일을하는 방법을 찾아 내려고 노력해 왔습니다. 이 메뉴와 텍스트 필드에 입력 한 텍스트를 표시

[[NSOperationQueue mainQueue] addOperationWithBlock:^{ [[UIMenuController sharedMenuController] setMenuVisible:YES animated:YES]; }];

: 코드 뷰 첫 번째로 반응을함으로써 UIMenuController를 표시한다고 가정하면, 동작 블록 내부의 메뉴가 보이지하게 코드의 비트를 추가합니다. 그러나 단점은 텍스트 필드가 더 이상 첫 번째 응답자가 아니라는 것입니다. 따라서 사용자는 새로운 문자를 입력하기 위해 텍스트 필드를 다시 탭해야합니다. 사용자 친화적이지 않습니다. http://www.raywenderlich.com/336/auto-complete-tutorial-for-ios-how-to-auto-complete-with-custom-values

을하지만 UIMenuController 청소기입니다 : 자동 완성에 대한

다른 옵션은 여기처럼 대신 UIMenuController의 jQuery과를 사용하고 있습니다. UIMenuController를 승자로 만드는 많은 방법을 시도했지만이 방법을 최적화하지 못했습니다. 해결책을 찾았 으면 알려주십시오.

+0

나는 부동산을 덜 차지하고 실제로는 정말 멋지게 보이는 다른 길로 나왔다. HotelTonight에서 Jon Sibley가 올린 [이 Autocomplete Text Field] (https://github.com/hoteltonight/HTAutocompleteTextField)를 확인하십시오. – codemolly

+0

예, UIMenuController의 대안은 훨씬 매력적입니다. –