2012-03-07 2 views
1

나는 UIPopoverController에 자동 완성을 구현하는 UITextField을 가지고 있습니다. Popover의 화살표가 caret (Mail과 Messages가 To : 필드에서하는 방식)를 직접 가리 키길 바랍니다. 어떻게 캐럿의 위치를 ​​나타내는 CGRect을 얻을 수 있습니까?UITextField에서 캐럿의 좌표 (즉, 프레임 rect)를 얻으려면 어떻게해야합니까?

참고 : this 질문과 관련된 텍스트 문자열의 위치에 관심이 없습니다. UITextField 프레임에 상대적인 캐럿의 픽셀 위치를 가져 오는 방법이 필요합니다.

답변

8

아래 코드를 구현하면 대부분의 문자에서 잘 작동합니다.

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
    UITextPosition *beginning = textField.beginningOfDocument; 
    UITextPosition *start = [textField positionFromPosition:beginning offset:range.location]; 
    UITextPosition *end = [textField positionFromPosition:start offset:range.length]; 
    CGRect caretFrame = [textField caretRectForPosition:end]; 

    return YES; 
} 
+1

텍스트가 자동 스크롤되는 경우 작동하지 않는 것 같습니다. – phatmann