[iOS] Change keyboard type while keyboard is visible (#443)

* Change keyboard while changing text

* add sample code
This commit is contained in:
adrianknight89 2016-12-30 16:14:13 -06:00 коммит произвёл E.Z. Hart
Родитель 32dab1d3c7
Коммит ffab6dd82e
4 изменённых файлов: 81 добавлений и 0 удалений

Просмотреть файл

@ -0,0 +1,78 @@
using System;
using Xamarin.Forms.CustomAttributes;
using Xamarin.Forms.Internals;
#if UITEST
using Xamarin.UITest;
using NUnit.Framework;
#endif
namespace Xamarin.Forms.Controls.Issues
{
[Preserve(AllMembers = true)]
[Issue(IssueTracker.Bugzilla, 31141, "Change Entry keyboard type while typing", PlatformAffected.iOS)]
public class Bugzilla31141 : TestContentPage // or TestMasterDetailPage, etc ...
{
protected override void Init()
{
var stackLayout = new StackLayout
{
Orientation = StackOrientation.Vertical,
Spacing = 10,
VerticalOptions = LayoutOptions.Start,
HorizontalOptions = LayoutOptions.Center
};
var label = new Label
{
Text = "Focus Entry or Editor and type characters. For every 3 characters, the keyboard type will change while keyboard is focused up to 12 characters."
};
stackLayout.Children.Add(label);
var entry = new Entry
{
WidthRequest = 250,
HeightRequest = 50,
BackgroundColor = Color.DarkGoldenrod
};
entry.TextChanged += InputViewOnTextChanged;
stackLayout.Children.Add(entry);
var editor = new Editor
{
WidthRequest = 250,
HeightRequest = 50,
BackgroundColor = Color.AntiqueWhite
};
editor.TextChanged += InputViewOnTextChanged;
stackLayout.Children.Add(editor);
Content = stackLayout;
}
void InputViewOnTextChanged(object sender, TextChangedEventArgs textChangedEventArgs)
{
if (textChangedEventArgs.NewTextValue.Length >= 15)
return;
switch (textChangedEventArgs.NewTextValue.Length % 15)
{
case 0:
(sender as InputView).Keyboard = Keyboard.Default;
break;
case 3:
(sender as InputView).Keyboard = Keyboard.Numeric;
break;
case 6:
(sender as InputView).Keyboard = Keyboard.Email;
break;
case 9:
(sender as InputView).Keyboard = Keyboard.Telephone;
break;
case 12:
(sender as InputView).Keyboard = Keyboard.Url;
break;
}
}
}
}

Просмотреть файл

@ -43,6 +43,7 @@
<Compile Include="$(MSBuildThisFileDirectory)Bugzilla29158.cs" /> <Compile Include="$(MSBuildThisFileDirectory)Bugzilla29158.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Bugzilla29363.cs" /> <Compile Include="$(MSBuildThisFileDirectory)Bugzilla29363.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Bugzilla29229.cs" /> <Compile Include="$(MSBuildThisFileDirectory)Bugzilla29229.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Bugzilla31141.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Bugzilla31145.cs" /> <Compile Include="$(MSBuildThisFileDirectory)Bugzilla31145.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Bugzilla31333.cs" /> <Compile Include="$(MSBuildThisFileDirectory)Bugzilla31333.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Bugzilla31366.cs" /> <Compile Include="$(MSBuildThisFileDirectory)Bugzilla31366.cs" />

Просмотреть файл

@ -118,6 +118,7 @@ namespace Xamarin.Forms.Platform.iOS
void UpdateKeyboard() void UpdateKeyboard()
{ {
Control.ApplyKeyboard(Element.Keyboard); Control.ApplyKeyboard(Element.Keyboard);
Control.ReloadInputViews();
} }
void UpdateText() void UpdateText()

Просмотреть файл

@ -155,6 +155,7 @@ namespace Xamarin.Forms.Platform.iOS
void UpdateKeyboard() void UpdateKeyboard()
{ {
Control.ApplyKeyboard(Element.Keyboard); Control.ApplyKeyboard(Element.Keyboard);
Control.ReloadInputViews();
} }
void UpdatePassword() void UpdatePassword()