thieumao

containsEmoji, editedWord of UITextView

Sep 13th, 2017
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 1.48 KB | None | 0 0
  1. extension UITextView {
  2.    
  3.     func editedWord() -> String? {
  4.        
  5.         if text.containsEmoji {
  6.             return nil
  7.         }
  8.        
  9.         let cursorPosition = selectedRange.location
  10.         let separationCharacters = NSCharacterSet(charactersInString: " ")
  11.        
  12.         let beginRange = Range(text.startIndex.advancedBy(0)..<text.startIndex.advancedBy(cursorPosition))
  13.         let endRange = Range(text.startIndex.advancedBy(cursorPosition)..<text.startIndex.advancedBy(text.characters.count))
  14.        
  15.         let beginPhrase = text.substringWithRange(beginRange)
  16.         let endPhrase = text.substringWithRange(endRange)
  17.        
  18.         let beginWords = beginPhrase.componentsSeparatedByCharactersInSet(separationCharacters)
  19.         let endWords = endPhrase.componentsSeparatedByCharactersInSet(separationCharacters)
  20.        
  21.         return beginWords.last! + endWords.first!
  22.     }
  23. }
  24.  
  25. extension String {
  26.    
  27.     var containsEmoji: Bool {
  28.         for scalar in unicodeScalars {
  29.             switch scalar.value {
  30.             case 0x1F600...0x1F64F, // Emoticons
  31.             0x1F300...0x1F5FF, // Misc Symbols and Pictographs
  32.             0x1F680...0x1F6FF, // Transport and Map
  33.             0x2600...0x26FF,   // Misc symbols
  34.             0x2700...0x27BF,   // Dingbats
  35.             0xFE00...0xFE0F:   // Variation Selectors
  36.                 return true
  37.             default:
  38.                 continue
  39.             }
  40.         }
  41.         return false
  42.     }
  43.    
  44. }
Advertisement
Add Comment
Please, Sign In to add comment