From 533f607e6a9affe7d47b5f4cf40f1e910f617a3a Mon Sep 17 00:00:00 2001 From: Justin McCandless Date: Thu, 12 Dec 2019 10:54:31 -0500 Subject: [PATCH] Smart quote/dash configuration support in iOS (flutter/engine#13863) Support for UITextSmartDashesType and UITextSmartQuotesType in iOS --- .../framework/Source/FlutterTextInputPlugin.mm | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterTextInputPlugin.mm b/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterTextInputPlugin.mm index ad39e710eeb..76d9a8106b5 100644 --- a/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterTextInputPlugin.mm +++ b/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterTextInputPlugin.mm @@ -159,6 +159,8 @@ static UIReturnKeyType ToUIReturnKeyType(NSString* inputType) { @property(nonatomic) UIKeyboardType keyboardType; @property(nonatomic) UIReturnKeyType returnKeyType; @property(nonatomic, getter=isSecureTextEntry) BOOL secureTextEntry; +@property(nonatomic) UITextSmartQuotesType smartQuotesType API_AVAILABLE(ios(11.0)); +@property(nonatomic) UITextSmartDashesType smartDashesType API_AVAILABLE(ios(11.0)); @property(nonatomic, assign) id textInputDelegate; @@ -193,6 +195,10 @@ static UIReturnKeyType ToUIReturnKeyType(NSString* inputType) { _keyboardType = UIKeyboardTypeDefault; _returnKeyType = UIReturnKeyDone; _secureTextEntry = NO; + if (@available(iOS 11.0, *)) { + _smartQuotesType = UITextSmartQuotesTypeYes; + _smartDashesType = UITextSmartDashesTypeYes; + } } return self; @@ -764,6 +770,18 @@ static UIReturnKeyType ToUIReturnKeyType(NSString* inputType) { _activeView.keyboardType = ToUIKeyboardType(inputType); _activeView.returnKeyType = ToUIReturnKeyType(configuration[@"inputAction"]); _activeView.autocapitalizationType = ToUITextAutoCapitalizationType(configuration); + if (@available(iOS 11.0, *)) { + NSString* smartDashesType = configuration[@"smartDashesType"]; + // This index comes from the SmartDashesType enum in the framework. + bool smartDashesIsDisabled = smartDashesType && [smartDashesType isEqualToString:@"0"]; + _activeView.smartDashesType = + smartDashesIsDisabled ? UITextSmartDashesTypeNo : UITextSmartDashesTypeYes; + NSString* smartQuotesType = configuration[@"smartQuotesType"]; + // This index comes from the SmartQuotesType enum in the framework. + bool smartQuotesIsDisabled = smartQuotesType && [smartQuotesType isEqualToString:@"0"]; + _activeView.smartQuotesType = + smartQuotesIsDisabled ? UITextSmartQuotesTypeNo : UITextSmartQuotesTypeYes; + } if ([keyboardAppearance isEqualToString:@"Brightness.dark"]) { _activeView.keyboardAppearance = UIKeyboardAppearanceDark; } else if ([keyboardAppearance isEqualToString:@"Brightness.light"]) {