Xamarin.forms iOS上的Forms Editor控件需要一些东西来标记数字输入的位置
在Android上,当直接使用编辑器控件时,文本/数字数据应该输入的位置很清楚: 在iOS上,这一点并不明显,我发现自己不得不猜测在何处按下按钮以使控件集中: 控件之间共享的代码: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
<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