未验证 提交 7fa08b3b 编写于 作者: S Stanislav Baranov 提交者: GitHub

Support for decimal and signed numeric keyboard (#4853)

* Support for decimal and signed numeric keyboard

* Comments
上级 ea17fff9
......@@ -77,13 +77,20 @@ public class TextInputPlugin implements MethodCallHandler {
}
}
private static int inputTypeFromTextInputType(String inputType,
boolean obscureText,
boolean autocorrect) {
private static int inputTypeFromTextInputType(
JSONObject type, boolean obscureText, boolean autocorrect) throws JSONException {
String inputType = type.getString("name");
if (inputType.equals("TextInputType.datetime"))
return InputType.TYPE_CLASS_DATETIME;
if (inputType.equals("TextInputType.number"))
return InputType.TYPE_CLASS_NUMBER;
if (inputType.equals("TextInputType.number")) {
int textType = InputType.TYPE_CLASS_NUMBER;
if (type.optBoolean("signed"))
textType |= InputType.TYPE_NUMBER_FLAG_SIGNED;
if (type.optBoolean("decimal"))
textType |= InputType.TYPE_NUMBER_FLAG_DECIMAL;
return textType;
}
if (inputType.equals("TextInputType.phone"))
return InputType.TYPE_CLASS_PHONE;
......@@ -119,7 +126,7 @@ public class TextInputPlugin implements MethodCallHandler {
return null;
outAttrs.inputType = inputTypeFromTextInputType(
mConfiguration.getString("inputType"),
mConfiguration.getJSONObject("inputType"),
mConfiguration.optBoolean("obscureText"),
mConfiguration.optBoolean("autocorrect", true));
outAttrs.imeOptions = EditorInfo.IME_FLAG_NO_FULLSCREEN;
......
......@@ -9,13 +9,17 @@
static const char _kTextAffinityDownstream[] = "TextAffinity.downstream";
static const char _kTextAffinityUpstream[] = "TextAffinity.upstream";
static UIKeyboardType ToUIKeyboardType(NSString* inputType) {
static UIKeyboardType ToUIKeyboardType(NSDictionary* type) {
NSString* inputType = type[@"name"];
if ([inputType isEqualToString:@"TextInputType.text"])
return UIKeyboardTypeDefault;
if ([inputType isEqualToString:@"TextInputType.multiline"])
return UIKeyboardTypeDefault;
if ([inputType isEqualToString:@"TextInputType.number"])
if ([inputType isEqualToString:@"TextInputType.number"]) {
if ([type[@"signed"] boolValue])
return UIKeyboardTypeNumbersAndPunctuation;
return UIKeyboardTypeDecimalPad;
}
if ([inputType isEqualToString:@"TextInputType.phone"])
return UIKeyboardTypePhonePad;
if ([inputType isEqualToString:@"TextInputType.emailAddress"])
......@@ -606,9 +610,10 @@ static UITextAutocapitalizationType ToUITextAutocapitalizationType(NSString* inp
}
- (void)setTextInputClient:(int)client withConfiguration:(NSDictionary*)configuration {
_view.keyboardType = ToUIKeyboardType(configuration[@"inputType"]);
_view.returnKeyType = ToUIReturnKeyType(configuration[@"inputType"]);
_view.autocapitalizationType = ToUITextAutocapitalizationType(configuration[@"inputType"]);
NSDictionary* inputType = configuration[@"inputType"];
_view.keyboardType = ToUIKeyboardType(inputType);
_view.returnKeyType = ToUIReturnKeyType(inputType[@"name"]);
_view.autocapitalizationType = ToUITextAutocapitalizationType(inputType[@"name"]);
_view.secureTextEntry = [configuration[@"obscureText"] boolValue];
NSString* autocorrect = configuration[@"autocorrect"];
_view.autocorrectionType = autocorrect && ![autocorrect boolValue]
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册