зеркало из https://github.com/DeGsoft/maui-linux.git
[iOS] Change keyboard type while keyboard is visible (#443)
* Change keyboard while changing text * add sample code
This commit is contained in:
Родитель
32dab1d3c7
Коммит
ffab6dd82e
|
@ -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)Bugzilla29363.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Bugzilla29229.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Bugzilla31141.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Bugzilla31145.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Bugzilla31333.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Bugzilla31366.cs" />
|
||||
|
|
|
@ -118,6 +118,7 @@ namespace Xamarin.Forms.Platform.iOS
|
|||
void UpdateKeyboard()
|
||||
{
|
||||
Control.ApplyKeyboard(Element.Keyboard);
|
||||
Control.ReloadInputViews();
|
||||
}
|
||||
|
||||
void UpdateText()
|
||||
|
|
|
@ -155,6 +155,7 @@ namespace Xamarin.Forms.Platform.iOS
|
|||
void UpdateKeyboard()
|
||||
{
|
||||
Control.ApplyKeyboard(Element.Keyboard);
|
||||
Control.ReloadInputViews();
|
||||
}
|
||||
|
||||
void UpdatePassword()
|
||||
|
|
Загрузка…
Ссылка в новой задаче