Xaml Xamarin表单应用程序:键盘型电话允许在Android中输入负值,但在IOS中不允许
我已经在Xamarin提出申请。用xaml设计UI。我的问题是,当我在输入字段中定义键盘电话时,它允许在android应用程序中输入负值,但在IOS中不允许输入负值Xaml Xamarin表单应用程序:键盘型电话允许在Android中输入负值,但在IOS中不允许,xaml,xamarin,xamarin.ios,xamarin.android,xamarin.forms,Xaml,Xamarin,Xamarin.ios,Xamarin.android,Xamarin.forms,我已经在Xamarin提出申请。用xaml设计UI。我的问题是,当我在输入字段中定义键盘电话时,它允许在android应用程序中输入负值,但在IOS中不允许输入负值 <StackLayout Spacing="20" Padding="0" Orientation="Horizontal" HorizontalOptions="FillAndExpand"> <Entry T
<StackLayout Spacing="20" Padding="0" Orientation="Horizontal" HorizontalOptions="FillAndExpand">
<Entry Text="{Binding Item.TextProvider2017}" HorizontalTextAlignment="End" FontSize="Small" WidthRequest="140" MinimumWidthRequest="60" Placeholder="For 2017" Keyboard="Telephone" Completed="NoOfProvider_Completed" Unfocused="NoOfProvider_Unfocused"/>
<Entry Text="{Binding Item.TextProvider2018}" HorizontalTextAlignment="End" FontSize="Small" WidthRequest="140" MinimumWidthRequest="60" Placeholder="For 2018" Keyboard="Telephone"/>
<Entry Text="{Binding Item.TextProvider2019}" HorizontalTextAlignment="End" FontSize="Small" WidthRequest="140" MinimumWidthRequest="60" Placeholder="For 2019" Keyboard="Telephone"/>
<Entry Text="{Binding Item.TextProvider2020}" HorizontalTextAlignment="End" FontSize="Small" WidthRequest="140" MinimumWidthRequest="60" Placeholder="For 2020" Keyboard="Telephone"/>
</StackLayout>
Android键盘:
IOS中的键盘:
在安卓系统中,键盘有负号,但IOS没有。有没有办法使两者相同。这是旧答案,请参阅下面的更新版本
您需要为具有UWP和Android默认行为的条目
控件创建一个自定义的InputAccessoryView
,同时将自定义的InputAccessoryView
添加到iOSUITextField
以下是iOS自定义渲染器的外观:
class MinusButtonEntryRenderer : EntryRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
{
base.OnElementChanged(e);
if (Control == null) return;
UIBarButtonItem button = new UIBarButtonItem("-", UIBarButtonItemStyle.Plain, (sender, args) =>
{
var position = Control.SelectedTextRange.Start;
var idx = (int) Control.GetOffsetFromPosition(Control.BeginningOfDocument, position);
Element.Text.Insert(idx, "-");
});
UIToolbar toolbar = new UIToolbar()
{
Items = new [] { button }
};
Control.InputAccessoryView = toolbar;
}
}
此代码位于PCL中,允许我们访问XAML的效果:
public class MinusButtonEntryEffect : RoutingEffect
{
public MinusButtonEntryEffect () : base ("Xamarin.MinusButtonEntryEffect") { }
}
因此,您的XAML将如下所示:
<Entry Text="{Binding Item.TextProvider2017}" HorizontalTextAlignment="End" FontSize="Small" WidthRequest="140" MinimumWidthRequest="60" Placeholder="For 2017" Keyboard="Telephone">
<Entry.Effects>
<local:MinusButtonEntryEffect />
</Entry.Effects>
</Entry>
谢谢Micah的重播,我是Xamarin的初学者,所以请告诉我在哪里写这段代码。在.iOS部分或通用代码中。@user2017279请查看我的更新答案。我已经提供了一种更简单的方法来实现您想要的。感谢您的帮助,我尝试了它编译的更新代码,但当我在模拟器上运行IOS应用程序时,应用程序在启动后崩溃。@user2017279您能否共享您正在使用的更新代码以及导致它崩溃的任何异常?谢谢
<Entry Text="{Binding Item.TextProvider2017}" HorizontalTextAlignment="End" FontSize="Small" WidthRequest="140" MinimumWidthRequest="60" Placeholder="For 2017" Keyboard="Telephone">
<Entry.Effects>
<local:MinusButtonEntryEffect />
</Entry.Effects>
</Entry>
xmlns:local="clr-namespace:MyApp"