2016-06-05 12 views
0

NSEvent имеет свойство символов, которое является NSString, действительным для событий со стрелками вверх/вниз. При каких условиях длина строки может быть больше 1?В каких условиях символы [NSEvent] могут быть NSString длиной более 1?

Единственное условие, которое я смог найти до сих пор, - это когда NSEvent соответствует входу от IME (Редактор метода ввода).

Редактировать - Я знал о суррогатном паре, но это как-то соскользнуло из моего сознания, когда я спрашивал об этом. Меня больше интересует случай, когда нет. графем (символов) больше, чем 1.

ответ

0

Вы также можете получить это с помощью программно размещенных событий. CGEventKeyboardSetUnicodeString() позволяет вызывающему подключить произвольную строку к событию ключа.

1

В каких условиях длина строки может превышать 1?

Когда у вас есть метод клавиатуры/ввода, который может вводить любой отдельный символ, который требует суррогатной пары в UTF-16, например. a (Unicode Linear B Syllable B008 A), то length будет равно 2. Это связано с тем, что length возвращает количество 16-разрядных блоков кода, а не количество символов.

0

Высокие коды кодировки unicode кодируются символьной последовательностью в Mac OS X. Попробуйте.