Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to enable hyphenation in UITextView with non-English text?

I use paragraphStyle.hyphenationFactor = 1, but it works fine only for English text. How to enable hyphenation in UITextView with non-English text or set locale to UITextView?

like image 889
ChikabuZ Avatar asked Apr 04 '14 08:04

ChikabuZ


1 Answers

With this and this I found solution:

NSError *error = nil;
NSLocale *locale = [NSLocale localeWithLocaleIdentifier:@"LOCALE"];
NSString *hyphenatedString = [string softHyphenatedStringWithLocale:locale error:&error];

NSString *htmlString = [NSString stringWithFormat:@"<html> \n"
                        "<head> \n"
                        "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"> \n"
                        "<style type=\"text/css\"> \n"
                        "html {-webkit-hyphens: auto; } \n"
                        "</style> \n"
                        "</head> \n"
                        "<body>%@</body> \n"
                        "</html>", hyphenatedString];


@try {
    SEL setContentToHTMLString = NSSelectorFromString([@[@"set", @"Content", @"To", @"HTML", @"String", @":"] componentsJoinedByString:@""]);
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
    [textView performSelector:setContentToHTMLString withObject:htmlString];
#pragma clang diagnostic pop
}
@catch (NSException *exception)
{
    textView.text = hyphenatedString;
}
like image 134
ChikabuZ Avatar answered Oct 16 '22 17:10

ChikabuZ