Есть ли возможность прекратить показ клавиатуры emoji в iOS 8? Он недоступен в numpad и защищенном тексте, но для электронной почты он есть. Если невозможно отключить его, как получить строковые значения из emoji?Как отключить клавиатуру iOS 8 emoji?
ответ
Попробуйте это:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if ([textField isFirstResponder])
{
if ([[[textField textInputMode] primaryLanguage] isEqualToString:@"emoji"] || ![[textField textInputMode] primaryLanguage])
{
return NO;
}
}
return YES;
}
для получения дополнительной информации см here.
EDIT:
Вы можете скрыть смайлик с клавиатуры, используя этот код:
txtField.keyboardType=UIKeyboardTypeASCIICapable;
EDIT:
Скрыть выбор Emoji с клавиатуры, используя построитель интерфейса.
Другой совет: вы можете установить это прямо из Xcode/Interface Builder. – BastiBen
Скрываясь в IB, приятно. Мне нравится. Благодарю. – Noundla
Если emoji скопирован из другого текстового поля, эта проверка должна быть выполнена, если только символы ASCII приняты string.canBeConvertedToEncoding (NSASCIIStringEncoding), или если только emoji следует удалить, эту lib можно использовать https://github.com/woxtu/NSString-RemoveEmoji –
Это работает на прошивке 7 и 8:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
// Disable emoji input
return [textField textInputMode] != nil;
}
Единственное, что на самом деле работает без устаревших методов! –
Решение, которое работало для меня:
self.texField.keyboardType = UIKeyboardTypeASCIICapable;
смайликов клавиатура не будет доступен с этим KeyboardType. .
Но это обязательно проверить вид каждого использовал строку добавляется в текстовом поле, так как пользователь может скопировать смайлик из других затем вставить его в
Вот как вы могли бы сделать так:
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
return [text canBeConvertedToEncoding:NSASCIIStringEncoding];
}
Будьте предупреждены, что, как я читал в другом посте, это может также помешать пользователю использовать клавиатуру со специальными символами, например, китайскую.
Это должен быть принятый ответ, так как люди все еще могут копировать/вставлять emoji с принятым ответом выше – tettoffensive
Просто обновить большие ответы выше для тех, кто сталкивается с теми же проблемами, что и я:
- Поле электронной почты устанавливается как keyboardType = .EmailAddress еще позволяет Emojis
- Вы можете иметь более чем одно условие вы хотите для фильтрации
- Свифта
- Предотвратить с & Р
Это, как ш е сделал это:
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
if !string.canBeConvertedToEncoding(NSASCIIStringEncoding){
return false
}
//other conditons
}
Редактировать
Хорошо решение с NSASCIIStringEncoding не хорошо, если вы хотите, чтобы определенные символы для других языков.
Некоторые буквы блокированные NSASCIIStringEncoding:
- Все остальные версий: àáâäæãåā
- Все другие версии е: èéêëēėę
- Все другие версии O: ôöòóœøōõ
Использование NSASCIIStringEncoding - не очень хорошая идея, если вы хотите поддерживать пользователей из других стран!
Я также попытался NSISOLatin1StringEncoding:
- Блокированные версии A:
- Блокированные версии Е: EEE
- блокированных версии O: œo
Это намного лучше ясно.
Я также попытался NSISOLatin2StringEncoding:
- блокированных версиях: àæãåā
- блокированных версий е: ээээ
- блокированных версии O: òœøōõ
хуже.
Edit2:
Следующая, кажется, работает:
extension String {
func containsEmoji() -> Bool {
for i in self.characters {
if i.isEmoji() {
return true
}
}
return false
}
}
extension Character {
func isEmoji() -> Bool {
return Character(UnicodeScalar(0x1d000)) <= self && self <= Character(UnicodeScalar(0x1f77f))
|| Character(UnicodeScalar(0x1f900)) <= self && self <= Character(UnicodeScalar(0x1f9ff))
|| Character(UnicodeScalar(0x2100)) <= self && self <= Character(UnicodeScalar(0x26ff))
}
}
Теперь мы называем:
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
if string.containsEmoji() {
return false
}
//other conditons
}
Это быстры версия.
func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool {
if textView.isFirstResponder() {
if textView.textInputMode?.primaryLanguage == nil || textView.textInputMode?.primaryLanguage == "emoji" {
return false;
}
}
return true;
}
В Swift: - Это ограничит в прошлом смайликов в вашем TextView и просто изменить тип клавиатуры для ASCii способена
func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool {
var result = Bool()
let disallowedCharacterSet1 = NSCharacterSet.symbolCharacterSet()
let replacementStringIsLegal = text.rangeOfCharacterFromSet(disallowedCharacterSet1) == nil
result = replacementStringIsLegal
let newLength = textView.text!.utf16.count + text.utf16.count - range.length
return newLength <= 300 && result // Bool
}
Я хотел ответ на Swift 3.0, который будет работать на shouldChangeTextInRange
и придумал следующее, что действительно просто и может обрабатывать любой язык, который вы бросаете на него (я показываю фотографию с помощью китайского для демонстрации).
Оператор охраны разворачивает необязательный текст, и оператор возврата проверяет, не вытащил ли оно значение, которое удовлетворило проверку trimmingCharacters
. Если есть значение (это означает, что он не является частью языка ввода текущих устройств), то он не будет пустым, поэтому метод возвращает false и не позволяет вводить символ.
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
guard let text = (textField.text as NSString?)?.replacingCharacters(in: range, with: string) else {
return true
}
return text.trimmingCharacters(in: CharacterSet.alphanumerics).isEmpty
}
Это зависит от компании Apple CharacterSet.alphanumerics
, так что нет никакой необходимости поддерживать и обновлять список разрешенных символов, если вы не хотите, чтобы добавить или удалить элементы.
Yay для языка агностиком!
Другое распространенное использование для электронной почты, поскольку электронная почта по умолчанию обеспечивает emojis. Я нашел с небольшой модификацией, я смог ограничить символы тем, что я хотел, чтобы адрес электронной почты работал.
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
guard let text = (textField.text as NSString?)?.replacingCharacters(in: range, with: string) else {
return true
}
return text.trimmingCharacters(in: CharacterSet.alphanumerics).isEmpty ||
!text.characters.filter { $0 == "@" || $0 == "." }.isEmpty
}
В стремительной 3.0
textField.keyboardType = .asciiCapable
Swift 3.1 Решение
// MARK: - Text Field Delegate
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
return textField.textInputMode != nil
}
Хотя Вопрос супер стар, я Столкнувшись с той же проблемой и смог решить ее к тому времени этой странице загружается с помощью этой небольшой трюк:
Просто выберите «ASCII Способен» или «Число и пунктуацию» в Interface Builder Xcode 8.2.1
Выход есть нет Emoji клавиатуры = D
Я уверен, что это кому-то помочь =)
Пожалуйста, не добавляйте [тот же ответ на несколько вопросов] (http://meta.stackexchange.com/questions/104227/is -Он приемлемых к надстройке а-дубликат-ответа-на-несколько-вопросов). Ответьте на лучшее и отметьте остальное как дубликаты, как только вы заработаете достаточно репутации. Если это не дубликат, приспособить сообщение к вопросу и флаг для удаления. –
- 1. Показать клавиатуру iOS Emoji
- 2. iOS 5: Как отключить клавиатуру Emoji в моем приложении?
- 3. Возможно ли сделать обычную клавиатуру emoji в IOS 8
- 4. Показать Emoji клавиатуру программно в iOS 9.0
- 5. Программно программировать клавиатуру emoji?
- 6. Как открыть emoji-клавиатуру по swift
- 7. Как создать пользовательскую клавиатуру, подобную emoji в iOS
- 8. ios 8 как отлаживать пользовательскую клавиатуру?
- 9. Как отключить стороннюю клавиатуру в приложении iOS
- 10. Добавить emoji на клавиатуру Android
- 11. Как создать пользовательскую клавиатуру с emoji
- 12. Как получить высоту клавиатуры iOS 8.3 emoji?
- 13. Как обнаружить emoji iOS
- 14. Пользовательская клавиатура iOS emoji без Unicode
- 15. IOS - Отключить клавиатуру при касании UIPickerView
- 16. Как перекодировать emoji в iOS?
- 17. Отключить клавиатуру от кода
- 18. как отключить полноэкранную клавиатуру
- 19. Как отключить виртуальную клавиатуру?
- 20. Добавить международную клавиатуру в ios
- 21. Создание пользовательских emoji iOS Keyboard
- 22. Android: вытащить клавиатуру emoji на кнопке нажмите
- 23. Как сделать приложение Emoji? (IOS)
- 24. Отключить экранную клавиатуру
- 25. Показать десятичную клавиатуру в HTML5 iOS 7/iOS 8
- 26. Как убрать клавиатуру iOS программно
- 27. Почему у emoji есть два разных кода utf-8? Как преобразовать emoji из utf-8, использовать NSString в ios?
- 28. iOS - как убрать клавиатуру?
- 29. Как добавить иконки кнопок на пользовательскую клавиатуру iOS 8?
- 30. Как показать клавиатуру на iOS 8 Today Extension?
возможно дубликат [Как отключить Emoji клавиатуры в прошивкой 7?] (Http://stackoverflow.com/questions/24927351/ how-to-disable-the-emoji-keyboard-in-ios-7) –