How to use autocorrection and shortcut list in iOS8 custom keyboard?
ios, ios8, keyboard, objective-c
Solution
Implementing the lexicon would look pretty much like this:
- Use `requestSupplementaryLexiconWithCompletion()` to get the lexicon upon launch once.
- Each type text is inputted add it to a `NSString` (tracking the current word)
- When user presses space (end of curent word) check the string against the lexicon
- If it's a match count the number of characters and delete that number of characters
- Input the suggestion suggested by the lexicon
- Clear the string and start again
Additionally you could also use `UITextChecker` to offer more advanced auto-correct features.
Code (in Objective-C, this may not be 100% accurate I wrote in SO while on the bus but it should do):
UILexicon *lexicon;
NSString *currentString;
-(void)viewDidLoad {
[self requestSupplementaryLexiconWithCompletion:^(UILexicon *receivedLexicon) {
self.lexicon = receivedLexicon;
}];
}
-(IBAction)myTypingAction:(UIButton *)sender {
[documentProxy insertText:sender.title];
[currentString stringByAppendingString:sender.title];
}
-(IBAction)space {
[documentProxy insertText:@" "];
for (UILexiconEntry *lexiconEntry in lexicon.entries) {
if (lexiconEntry.userInput isEqualToString:currentString) {
for (int i = 0; currentString.length >=i ; i++) {
[documentProxy deleteTextBackwards];
}
[documentProxy insertText:lexiconEntry.documentText];
currentString = @"";
}
}
}
Feel free to comment if you have any more questions.
Source: Personal experience with iOS 8 keyboards and UILexicon
Problem
I want to use the autocorrection and shortcut list like default English keyboard with my custom keyboard. I check the in keyboard document but don't know how to use it. In keyboard documentation. Every custom keyboard (independent of the value of its RequestsOpenAccess key) has access to a basic autocorrection lexicon through the UILexicon class. Make use of this class, along with a lexicon of your own design, to provide suggestions and autocorrections as users are entering text. The UILexicon object contains words from various sources, including: - Unpaired first names and last names from the user’s Address Book database - Text shortcuts defined in the Settings > General > Keyboard > Shortcuts list - A common words dictionary How to access shortcut list and input from our dictionary in Objective-C? How to use UILexicon with requestSupplementaryLexiconWithCompletion?