2017-09-21 6 views
1

UITextView의 첫 번째 문자는 attributedText의 특성을 따르는 텍스트의 기본 특성으로 사용하는 것 같습니다. typingAttributes를 사용하려고 시도했지만 입력 할 때만 작동합니다 (붙여 넣기와 스페이스 바를 두 번 두드리는 것은 곧 설명 할 문제입니다).UITextView의 기본 특성

텍스트의 첫 번째 줄로 언급 한 다음 붙여 넣은 텍스트에 붙여 넣은 텍스트에 설명 속성이 있어야합니다.

그러나 텍스트 (기본 특성) 뒤에 설명을 추가 한 다음 붙여 넣은 텍스트에 기본 특성이 있어야합니다.

맹 글타 지 후에 타이핑 할 때 작동하는 typingAttributes를 재설정하려했으나 스페이스 바를 붙여 넣거나 두 번 탭하면 언제든지 .을 추가하면 첫 번째 문자의 속성이 적용됩니다.

처리 방법이 있습니까? 아마도 NSAttributedString 함수를 오버라이드하거나 UITextView의 어떤 메서드/var가 도움이되지 않을까요?

우선 편집 :

func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, 
         replacementText text: String) -> Bool 

날 false를 반환하고 텍스트 나 자신을 대체 할 수 있도록 내부에 이상 1 개 캐릭터의

캡처 텍스트입니다.

는 나는 그러나 사람이 제대로 매우 도움이 될 것이를 캡처하는 방법을 알고있는 경우 .

두 공간에서의 변화를 포착하기 위해 노력하고 붙어있다.

답변

1

나는 1 개 문자 이상

func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, 
         replacementText text: String) -> Bool 

및 캡처 된 텍스트를 사용하고 적절한 속성으로 나 자신을 삽입 false를 돌려 붙여 넣기 텍스트로 내 문제를 해결하기 위해 내 편집에서 말했듯이. (적어도 잠시 동안) 내 솔루션을 바 공간의 이중 도청에 관해서는

할지 여부 우리 지금

public func textViewDidChange(_ textView: UITextView) 

을 확인하고 (다시 selectedRange 위치와 두 문자 기준)을 참조하는 것입니다 마침표와 공백이있다. 우리가 할 경우 해당 위치에 대한 기본 텍스트 특성을 넣습니다. 마침표와 공백을 기본값으로 설정하지 않아야 할 경우가 있기 때문에 모든 사용자에게 적용되지는 않습니다. 잠시 동안 나를 위해 문제가되지 않는 것 같습니다. 그렇다면 여기에 제 작품을 게시 할 것입니다.

+0

흥미 롭습니다. 나는주기 문제가있는 붙여 넣기 + 더블 탭에 대해 전혀 생각하지 않았습니다! 후속 조치를 보내 주셔서 감사합니다. 적절한 후속 조치를 통해 SO 응답을 보는 것은 드뭅니다. 나는 여전히이 동작이 iOS 11에서 변경된 이유에 대해 궁금합니다. – ajfigueroa

+0

나는 이것이 iOS 11에만 국한된 것이 아니라 레이더 아래에있는 문제라고 생각합니다. – Steve