2014-10-04 2 views
4

Custom Keyboard에서 사용자가 텍스트 (및 그 범위)에서 무언가를 선택했는지 알고 싶습니다.사용자 정의 키보드 : 선택한 텍스트 얻기

  • selectionWillChange (에서 textInput : UITextInput)
  • selectionDidChange (에서 textInput : UITextInput)
  • textWillChange (에서 textInput : UITextInput) 문서를 다음 나는 내가 UITextInputDelegate 프로토콜에 의해 제공되는 콜백을 활용할 수 생각
  • textDidChange (텍스트 입력 : UITextInput)

그러나 selectionWill/DidChange 콜백은 호출되지 않습니다. 텍스트의 선택을 변경하면 다른 콜백이 대신 실행됩니다 (textWill/DidChange). 이것이 이상한 것처럼, 내가 가진 문제는 textInput 매개 변수가 항상 nil이라는 것입니다. 그러나 문제가 발생하면 selectedTextRange에 액세스하고 싶습니다.

모든 아이디어 현재 선택한 텍스트 및/또는 사용자 지정 키보드 구현 내에서 해당 범위를 검색하는 방법은 무엇입니까?

+0

일부 코드를 게시 할 수 있습니까? – nikhil84

+0

입력보기에서 텍스트를 가져 오는 방법을 알려주십시오. 나는 textInput 대리자에 null이 있습니다. 미리 감사드립니다. –

+0

@ImranAhmed : 이것은 실제로이 질문의 요점입니다. 불행히도 그것은 가능하지 않을 것 같습니다 (맞춤 키보드 용) – cweinberger

답변

4

완전히 잘못 아니었다면 불가능합니다. (iOS 8의 자체 키보드 앱을 말하는 것이지 자신의 앱에 직접 키보드를 구현 한 것이 아닙니다.)

키보드는 실제로 사용자가 작성한 텍스트에 액세스 할 수 없습니다. UITextView 완전히 다른 응용 프로그램입니다.

출처 : https://developer.apple.com/library/ios/documentation/General/Conceptual/ExtensibilityPG/Keyboard.html - 제 7

, "시스템 키보드 사용자 정의 키보드를 사용할 수없는 기능"사용자 정의 키보드 만의 UIInputViewController 개체의 기본보기에서 그릴 수 있기 때문에, 텍스트를 선택할 수 없습니다. 텍스트 선택은 키보드를 사용하는 앱의 제어하에 입니다. 해당 응용 프로그램 이 편집 메뉴 인터페이스 (예 : 잘라 내기, 복사 및 붙여 넣기)를 제공하면 키보드에 액세스 할 수 없습니다. 사용자 지정 키보드는 삽입 지점 근처에 인라인 자동 수정 컨트롤을 제공 할 수 없습니다. 당신은 당신의 자신의 응용 프로그램에서 자신의 구현에


을 참조하는 경우 : 당신이 당신의 IB에서 텍스트 필드의 대리인으로 올바른 클래스를 선택? 클래스에 UITextInputDelegate를 추가 했습니까 (영어로 작성합니까?) 헤더 파일? 그러면 위임 메서드를 호출해야합니다. 또한 유용한 예제 코드도 있습니다.)

+1

실제로 사용자가 작성한 텍스트에 액세스 할 수 있습니다.사용자가 현재 선택한 내용에 대한 정보를 얻을 수 없습니다. 참고로 Apple에서 관련 문구를 추가했습니다. 귀하의 회신에 감사드립니다 - 이것은 나를 위해 충분합니다. – cweinberger

관련 문제