CoreText를 사용하고 UITextInput
프로토콜을 준수하는 사용자 지정 UITextView (EGOTextView 기반)를 구현하고 있습니다. 하나의 성가신 것을 제외하고는 거의 모든 것이 잘 작동합니다 (휴!). 자동 고침 제안 텍스트가 세로로 미러링되고 강조 표시가 약간 오른쪽으로 이동합니다. 여기처럼 보이는 내용은 다음과 같습니다. "도움"나는 그것이로를 autocorrects하는 "HELO"입력 한 텍스트 필드에사용자 지정 텍스트 필드 - 미러 자동 고침
보시다시피 자동 텍스트는 배경이 아닌 세로로 미러링됩니다. 또한 수평 적으로 7pt만큼 오른쪽으로 오프셋되어 있습니다.
두 번째 문제 (수평 오프셋)를 해결하기 위해 메서드가 올바른 CGRect
을 반환한다는 것을 확인했습니다. 나는 이것을 두 가지 방법으로 해왔다. 첫 번째는 시각적으로 내가 UIMenuController
을 표시 할 때 올바른 위치에 표시되는지 확인하는 것입니다. 두 번째는 CGRect
주위에 윤곽선을 그리고 firstRectForRange:
이 반환합니다. 여기에는 CGRect
과 동일한 텍스트가 나와 있습니다.
당신이 볼 수 있듯이
가 올바른 영역이 설명되어 있지만, 자동 고침이 표시되어/잘못 강조했다.모든 코드를 공유하게되어 기쁩니다. 그러나 거대한 클래스이고 지금은 꽤 어려워졌습니다. 모든 포인터가 크게 감사하겠습니다!
편집 : 소스 코드는 github.com/cbrauchli/EGOTextView의이 실험실 지점에서 사용할 수 있습니다.
이 작업을 어떻게 수행하는지 모르므로 'UIKit'을 사용하면 도면의 원점이 왼쪽 상단에 있고 (y가 아래로 갈수록 증가 함) 유의하십시오. 그러나 더 낮은 수준의 드로잉 함수는 왼쪽 아래의 원점을 갖습니다 (y는 점점 커짐). 당신의 해법은 (1, -1)의 스케일 변환을 적용하여 y 축을 뒤집을 수 있습니다. – rmaddy
@rmaddy, 감사합니다. 그게 분명히 생겼지 만, 어디서 잘못되었는지, 왜 내 코드가 자동 고침 뷰의 드로잉에 영향을 미칠지 알 수 없다. 나는 계속 나아가 편집에서 볼 수있는 github repo를 만들었습니다. – cbrauchli