Я работаю над созданием клавиатуры Swype для iOS, и мне было интересно, каким образом я получу объективный код c для запоминания клавиш, над которыми пользователь нависал.
%hook UIKBKeyplaneView
- (void)setState:(int)arg1 forKey:(id)arg2 {
if (![ISController sharedInstance].isSwyping) {
%orig;
} else {
%orig(2,arg2);
}
}
%end
%hook UIKeyboardImpl
- (void)longPressAction {
if (![ISController sharedInstance].isSwyping) {
%orig;
}
}
%end
%hook UIKeyboardLayoutStar
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
%orig;
[[ISController sharedInstance] forwardMethod:self sel:_cmd touches:touches event:event];
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
%orig;
[[ISController sharedInstance] forwardMethod:self sel:_cmd touches:touches event:event];
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
%orig;
[[ISController sharedInstance] forwardMethod:self sel:_cmd touches:touches event:event];
}
%end
%hook UIKeyboard
-(void)removeFromSuperview{
[[ISController sharedInstance].suggestionsView hideAnimated:YES];
%orig;
}
- (void)setFrame:(CGRect)frame {
%orig;
[ISController sharedInstance].suggestionsView.frame = CGRectMake(0, frame.origin.y-30, frame.size.width, 30);
}
%end
На данный момент у меня есть клавиатура, показывающая путь пользователя, но она не помнит, где пользователь указал пальцем. Пример: если бы пользователь поменял слово «the», он бы не отображал «th», а только конечный символ «e».