Có tùy chọn nào để ngừng hiển thị bàn phím biểu tượng cảm xúc trong iOS 8 không? Nó không có sẵn trong văn bản đầy đủ và an toàn nhưng đối với email thì nó ở đó. Nếu không thể vô hiệu hóa cách lấy các giá trị chuỗi từ biểu tượng cảm xúc?Làm thế nào để vô hiệu hóa bàn phím biểu tượng cảm xúc iOS 8?
Trả lời
Hãy thử điều này:
- (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;
}
để biết thêm thấy here.
EDIT:
Bạn có thể ẩn biểu tượng cảm xúc từ bàn phím sử dụng mã này:
txtField.keyboardType=UIKeyboardTypeASCIICapable;
EDIT:
Ẩn lựa chọn biểu tượng cảm xúc từ bàn phím sử dụng xây dựng giao diện.
Một Gợi ý khác: Bạn có thể thiết lập trực tiếp từ Xcode/Interface Builder. – BastiBen
ẩn trong IB là tốt đẹp nhất. Tôi thích nó. Cảm ơn. – Noundla
Nếu biểu tượng cảm xúc được sao chép từ trường văn bản khác, việc kiểm tra này sẽ được thực hiện nếu chỉ các ký tự ASCII chấp nhận string.canBeConvertedToEncoding (NSASCIIStringEncoding), hoặc nếu chỉ cần biểu tượng cảm xúc sẽ bị xóa lib này có thể được sử dụng https://github.com/woxtu/NSString-RemoveEmoji –
này hoạt động trên iOS 7 và 8:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
// Disable emoji input
return [textField textInputMode] != nil;
}
Điều duy nhất thực sự hoạt động mà không có phương pháp không dùng nữa! –
Các giải pháp mà làm việc cho tôi:
self.texField.keyboardType = UIKeyboardTypeASCIICapable;
Bàn phím biểu tượng cảm xúc sẽ không có sẵn với KeyboardType đó. .
Nhưng nó bắt buộc phải kiểm tra các loại mỗi char thêm vào trong TextField, vì người dùng có thể sao chép một biểu tượng cảm xúc từ nơi khác sau đó dán nó vào
Đây là cách bạn có thể làm như vậy:
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
return [text canBeConvertedToEncoding:NSASCIIStringEncoding];
}
Được cảnh báo rằng, khi tôi đọc trong một bài đăng khác, điều này cũng có thể ngăn người dùng sử dụng bàn phím với các ký tự đặc biệt, như ký tự Trung Quốc.
đây phải là câu trả lời được chấp nhận vì mọi người vẫn có thể sao chép/dán biểu tượng cảm xúc với câu trả lời được chấp nhận ở trên – tettoffensive
Chỉ cần cập nhật các câu trả lời tuyệt vời trên cho bất cứ ai phải đối mặt với vấn đề tương tự như tôi:
- Một trường email thiết lập như keyboardType = .EmailAddress vẫn cho phép biểu tượng cảm xúc
- Bạn có thể có nhiều hơn một tình trạng mà bạn muốn để lọc
- Swift
- Ngăn chặn C & P
Đây là cách w e đã làm nó:
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
if !string.canBeConvertedToEncoding(NSASCIIStringEncoding){
return false
}
//other conditons
}
Sửa
Okay giải pháp với NSASCIIStringEncoding là không tốt nếu bạn muốn cho phép một số ký tự cho các ngôn ngữ khác.
Một số chữ bị chặn với NSASCIIStringEncoding:
- Tất cả các phiên bản khác của a: àáâäæãåā
- Tất cả các phiên bản khác của e: èéêëēėę
- Tất cả các phiên bản khác của o: ôöòóœøōõ
Sử dụng NSASCIIStringEncoding không phải là ý tưởng hay nếu bạn muốn hỗ trợ người dùng từ các quốc gia khác!
Tôi cũng đã cố gắng NSISOLatin1StringEncoding:
- Blocked phiên bản của một: a
- phiên bản bị chặn của e: Eee
- phiên bản bị chặn của o: OEO
này là tốt hơn nhiều thông suốt.
Tôi cũng đã cố gắng NSISOLatin2StringEncoding:
- phiên bản bị chặn của a: àæãåā
- phiên bản bị chặn của e: EEEE
- phiên bản bị chặn của o: òœøōõ
Tệ hơn nữa.
Edit2:
Sau đây dường như làm việc:
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))
}
}
Bây giờ chúng ta gọi là:
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
if string.containsEmoji() {
return false
}
//other conditons
}
Đây là phiên bản nhanh chóng.
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;
}
Trong Swift: - Nó sẽ hạn chế về quá khứ emoji trong TextView của mình và Chỉ cần thay đổi kiểu bàn phím để ascii khả năng
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
}
tôi muốn một câu trả lời cho Swift 3.0 mà sẽ làm việc trên shouldChangeTextInRange
và đưa ra những điều sau đây thực sự đơn giản và có thể xử lý bất kỳ ngôn ngữ nào bạn ném vào nó (tôi bao gồm ảnh bằng tiếng Trung Quốc để minh họa).
Tuyên bố bảo vệ sẽ bỏ qua văn bản tùy chọn và câu lệnh trả về kiểm tra xem nó có rút ra giá trị thỏa mãn kiểm tra trimmingCharacters
hay không. Nếu có một giá trị (nghĩa là nó không phải là một phần của ngôn ngữ đầu vào của thiết bị hiện tại), thì nó sẽ không trống, vì vậy phương thức trả về false và không cho phép ký tự được nhập vào.
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
}
này dựa trên Apple CharacterSet.alphanumerics
, do đó không cần phải duy trì và cập nhật một danh sách các nhân vật đã được phê duyệt, trừ khi bạn muốn thêm hoặc xoá các mục.
Yay cho ngôn ngữ bất khả tri!
Một ứng dụng phổ biến khác là dành cho email, vì bàn phím email mặc định cung cấp biểu tượng cảm xúc. Tôi tìm thấy với một sửa đổi nhỏ, tôi đã có thể hạn chế các ký tự đến những gì tôi muốn cho một địa chỉ email để làm việc.
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
}
Trong nhanh chóng 3,0
textField.keyboardType = .asciiCapable
Swift 3.1 Giải pháp
// MARK: - Text Field Delegate
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
return textField.textInputMode != nil
}
Dù Câu hỏi là siêu cũ, 012.Tôi đã Đối mặt với cùng một vấn đề và đã có thể giải quyết nó bằng thời gian trang này nạp bởi lừa nhỏ này:
Đơn giản chỉ cần chọn "ASCII Capable" hoặc "Số và punctuations" trong giao diện Builder Xcode 8.2.1
Output là Không Emoji Keyboard = D
tôi chắc chắn rằng nó sẽ giúp người =)
Vui lòng không thêm [cùng câu trả lời cho nhiều câu hỏi] (http://meta.stackexchange.com/questions/104227/is -it-chấp nhận-để-thêm-một-trùng-trả-cho-nhiều câu hỏi). Trả lời câu trả lời hay nhất và gắn cờ phần còn lại dưới dạng bản sao, khi bạn kiếm đủ danh tiếng. Nếu nó không phải là bản sao, hãy điều chỉnh bài đăng thành câu hỏi và gắn cờ để hủy xóa. –
- 1. Gọi bàn phím biểu tượng cảm xúc theo chương trình?
- 2. Thay thế biểu tượng cảm xúc - PHP
- 3. Vô hiệu hóa các phím trên bàn phím
- 4. UIKeyboardWillChangeFrame Thông báo không được gọi bằng bàn phím biểu tượng cảm xúc
- 5. Hiển thị biểu tượng cảm xúc tùy chỉnh trong Bàn phím Android
- 6. Ẩn/tắt biểu tượng cảm xúc theo chương trình trên bàn phím ảo Android
- 7. Có cách nào để vô hiệu hóa thanh tiên đoán của bàn phím trong ios 8 không?
- 8. Làm thế nào để phát hiện hỗ trợ biểu tượng cảm xúc trên Android theo mã
- 9. Jquery vô hiệu hóa phím trên bàn phím
- 10. Windows 8 - Làm thế nào để loại bỏ bàn phím cảm ứng?
- 11. Phím shift trên bàn phím iPhone bị vô hiệu hóa
- 12. C# Làm thế nào để vô hiệu hóa một phím
- 13. Làm thế nào để vô hiệu hóa tự động hoàn thành trong bàn phím iPhone UITextView
- 14. Làm thế nào để vô hiệu hóa bàn phím trên một UITextView?
- 15. Làm thế nào để trích xuất tất cả các biểu tượng cảm xúc từ văn bản?
- 16. Làm thế nào để vô hiệu hóa quy mô ứng dụng tự động trong iOS 8?
- 17. Làm thế nào để chèn ký tự utf-8 mb4 (biểu tượng cảm xúc trong ios5) vào mysql?
- 18. Làm thế nào để vô hiệu hóa làm nổi bật của biểu tượng ứng dụng?
- 19. Python - Đọc Ký tự Unicode Biểu tượng cảm xúc
- 20. Làm thế nào để chèn biểu tượng cảm xúc trong LaTeX?
- 21. PHP văn bản để biểu tượng cảm xúc
- 22. Làm thế nào để mã hóa biểu tượng cảm xúc khi gửi đến máy chủ (Ruby on Rails)?
- 23. mvc3 - Làm thế nào để vô hiệu hóa htmlencode của các biểu tượng từ nguồn
- 24. Phân tích cú pháp biểu tượng cảm xúc Node.js
- 25. hiển thị biểu tượng cảm xúc/cảm xúc trong Android TextView
- 26. Cách hiển thị Biểu tượng cảm xúc/Biểu tượng cảm xúc trong Snackbar hoặc Bánh mì nướng/Textview
- 27. Làm thế nào để ngăn hiển thị biểu tượng của Bootstrap vào biểu tượng cảm xúc (Opera, FF)?
- 28. Cách nhập biểu tượng cảm xúc được nhập (thông qua bàn phím mặc định) trên trường văn bản
- 29. Làm thế nào để vô hiệu hóa nút "Next" trên bàn phím phần mềm EditText (thay thế bằng nút "Done")
- 30. Biểu tượng cảm xúc trong ứng dụng đổ nát string.xml
thể trùng lặp của [Làm thế nào để vô hiệu hóa bàn phím biểu tượng cảm xúc trong iOS 7?] (Http://stackoverflow.com/questions/24927351/ how-to-disable-the-emoji-keyboard-in-ios-7) –