Xamarin.forms iOS上的Forms Editor控件需要一些东西来标记数字输入的位置

Xamarin.forms iOS上的Forms Editor控件需要一些东西来标记数字输入的位置,xamarin.forms,xamarin.android,xamarin.ios,Xamarin.forms,Xamarin.android,Xamarin.ios,在Android上,当直接使用编辑器控件时,文本/数字数据应该输入的位置很清楚: 在iOS上,这一点并不明显,我发现自己不得不猜测在何处按下按钮以使控件集中: 控件之间共享的代码: <Editor Grid.Row="1" Grid.Column="1" Text="SomeTextHere" VerticalOptions="Center" Keyboard="N

在Android上,当直接使用编辑器控件时,文本/数字数据应该输入的位置很清楚:

在iOS上,这一点并不明显,我发现自己不得不猜测在何处按下按钮以使控件集中:

控件之间共享的代码:

<Editor Grid.Row="1" Grid.Column="1" 
                    Text="SomeTextHere"
                    VerticalOptions="Center"
                    Keyboard="Numeric"
                    HorizontalOptions="CenterAndExpand"
                    WidthRequest="68"
                    MinimumWidthRequest="68"
                    />

如果必须的话,我并不反对编写自定义控件,但是有没有更简单的方法呢


请注意,我不想使用占位符文本。

您可以使用CustomRenderer来实现它

解决方案1 您可以在iOS中设置编辑器的边框

using Foundation;
using UIKit;
using CoreGraphics;
using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;

using xxx.iOS;


[assembly:ExportRenderer(typeof(Editor),typeof(MyEditorRenderer))]
namespace xxx.iOS
{
    public class MyEditorRenderer:EditorRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<Editor> e)
        {
            base.OnElementChanged(e);

            if(Control!=null)
            {
                               
               Control.Layer.MasksToBounds = true;
               Control.Layer.BorderWidth = 1.0f;
               Control.Layer.BorderColor = UIColor.Black.CGColor;

            }

        }
    }
}
<代码>使用基础; 使用UIKit; 使用核心图形; 使用Xamarin.Forms; 使用Xamarin.Forms.Platform.iOS; 使用xxx.iOS; [assembly:ExportRenderer(typeof(编辑器)、typeof(MyEditorRenderer))] 命名空间xxx.iOS { 公共类MyEditorRenderer:EditorRenderer { 受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e) { 基础。一个要素发生变化(e); if(控件!=null) { Control.Layer.MasksToBounds=true; Control.Layer.BorderWidth=1.0f; Control.Layer.BorderColor=UIColor.Black.CGColor; } } } } 解决方案2 如果你想让它像Android一样显示(只在下面一行)

<代码>使用基础; 使用UIKit; 使用核心图形; 使用Xamarin.Forms; 使用Xamarin.Forms.Platform.iOS; 使用xxx.iOS; [assembly:ExportRenderer(typeof(编辑器)、typeof(MyEditorRenderer))] 命名空间xxx.iOS { 公共类MyEditorRenderer:EditorRenderer { 受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e) { 基础。一个要素发生变化(e); if(控件!=null) { UIView lineView=新建UIView(){ Frame=new CGRect(0,Element.HeightRequest-1,Element.WidthRequest,1), BackgroundColor=UIColor.Black, }; 控件。添加子视图(lineView); } } } }
您需要在Xaml中设置
HeightRequest
WidthRequest

您可以使用CustomRenderer来实现它

解决方案1 您可以在iOS中设置编辑器的边框

using Foundation;
using UIKit;
using CoreGraphics;
using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;

using xxx.iOS;


[assembly:ExportRenderer(typeof(Editor),typeof(MyEditorRenderer))]
namespace xxx.iOS
{
    public class MyEditorRenderer:EditorRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<Editor> e)
        {
            base.OnElementChanged(e);

            if(Control!=null)
            {
                               
               Control.Layer.MasksToBounds = true;
               Control.Layer.BorderWidth = 1.0f;
               Control.Layer.BorderColor = UIColor.Black.CGColor;

            }

        }
    }
}
<代码>使用基础; 使用UIKit; 使用核心图形; 使用Xamarin.Forms; 使用Xamarin.Forms.Platform.iOS; 使用xxx.iOS; [assembly:ExportRenderer(typeof(编辑器)、typeof(MyEditorRenderer))] 命名空间xxx.iOS { 公共类MyEditorRenderer:EditorRenderer { 受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e) { 基础。一个要素发生变化(e); if(控件!=null) { Control.Layer.MasksToBounds=true; Control.Layer.BorderWidth=1.0f; Control.Layer.BorderColor=UIColor.Black.CGColor; } } } } 解决方案2 如果你想让它像Android一样显示(只在下面一行)

<代码>使用基础; 使用UIKit; 使用核心图形; 使用Xamarin.Forms; 使用Xamarin.Forms.Platform.iOS; 使用xxx.iOS; [assembly:ExportRenderer(typeof(编辑器)、typeof(MyEditorRenderer))] 命名空间xxx.iOS { 公共类MyEditorRenderer:EditorRenderer { 受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e) { 基础。一个要素发生变化(e); if(控件!=null) { UIView lineView=新建UIView(){ Frame=new CGRect(0,Element.HeightRequest-1,Element.WidthRequest,1), BackgroundColor=UIColor.Black, }; 控件。添加子视图(lineView); } } } } 您需要在Xaml中设置
HeightRequest
WidthRequest