Use reloadInputViews to update keyboard appearance

This commit is contained in:
Peter 2019-07-26 15:02:36 +01:00
parent ab3f224d56
commit f3120007e5
4 changed files with 29 additions and 10 deletions

View File

@ -142,7 +142,9 @@ NS_ASSUME_NONNULL_BEGIN
@property (nonatomic, strong) NSString * _Nullable initialPrimaryLanguage;
- (void)resetInitialPrimaryLanguage;
- (void)dropAutocorrection;
- (bool)isCurrentlyEmoji;
@end

View File

@ -83,7 +83,6 @@
@interface ASPanningOverriddenUITextView : ASTextKitComponentsTextView
{
BOOL _shouldBlockPanGesture;
BOOL _initializedPrimaryInputLanguage;
}
@property (nonatomic, copy) bool (^shouldCopy)();
@ -93,6 +92,7 @@
@property (nonatomic, copy) void (^backspaceWhileEmpty)();
@property (nonatomic, strong) NSString * _Nullable initialPrimaryLanguage;
@property (nonatomic) bool initializedPrimaryInputLanguage;
@end
@ -200,6 +200,10 @@
}
}
- (UIKeyboardAppearance)keyboardAppearance {
return [super keyboardAppearance];
}
- (UITextInputMode *)textInputMode {
if (!_initializedPrimaryInputLanguage) {
_initializedPrimaryInputLanguage = true;
@ -642,6 +646,14 @@
}
}
- (void)setInitialPrimaryLanguage:(NSString *)initialPrimaryLanguage {
((ASPanningOverriddenUITextView *)_textKitComponents.textView).initialPrimaryLanguage = initialPrimaryLanguage;
}
- (void)resetInitialPrimaryLanguage {
((ASPanningOverriddenUITextView *)_textKitComponents.textView).initializedPrimaryInputLanguage = false;
}
- (void)dropAutocorrection {
_isPreservingSelection = YES; // Used in -textViewDidChangeSelection: to avoid informing our delegate about our preservation.
_isPreservingText = YES;
@ -664,6 +676,15 @@
_isPreservingText = NO;
}
- (bool)isCurrentlyEmoji {
NSString *value = [[UITextInputMode currentInputMode] primaryLanguage];
if ([value isEqualToString:@"emoji"]) {
return true;
} else {
return false;
}
}
#pragma mark - Core
- (void)_updateDisplayingPlaceholder
{

View File

@ -11,14 +11,8 @@ public class EditableTextNode: ASEditableTextNode {
guard newValue != self.keyboardAppearance else {
return
}
let resigning = self.isFirstResponder()
if resigning {
self.resignFirstResponder()
}
super.keyboardAppearance = newValue
if resigning {
self.becomeFirstResponder()
}
self.textView.reloadInputViews()
}
}
}

View File

@ -645,8 +645,10 @@ class ChatTextInputPanelNode: ChatInputPanelNode, ASEditableTextNodeDelegate {
let keyboardAppearance = interfaceState.theme.chat.inputPanel.keyboardColor.keyboardAppearance
if let textInputNode = self.textInputNode, textInputNode.keyboardAppearance != keyboardAppearance, textInputNode.isFirstResponder() {
textInputNode.resignFirstResponder()
textInputNode.becomeFirstResponder()
if textInputNode.isCurrentlyEmoji() {
textInputNode.initialPrimaryLanguage = "emoji"
textInputNode.resetInitialPrimaryLanguage()
}
textInputNode.keyboardAppearance = keyboardAppearance
}