Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin.forms 当用户停止使用xamarin表单写入时,如何在编辑器中滚动到顶部_Xamarin.forms - Fatal编程技术网

Xamarin.forms 当用户停止使用xamarin表单写入时,如何在编辑器中滚动到顶部

Xamarin.forms 当用户停止使用xamarin表单写入时,如何在编辑器中滚动到顶部,xamarin.forms,Xamarin.forms,我尝试使用scrolToAsync方法,但不起作用。在xaml上停止编写消息或 按下键盘向下键,控制转到消息的开头。当键盘 向下键单击,编辑器控件转到消息的开头。 我在编辑器propertyChanged上使用此方法 double iScrollPosition = 0; await editorScrollView.ScrollToAsync(0, iScrollPosition, true); <Frame Margin="10"> <S

我尝试使用scrolToAsync方法,但不起作用。在xaml上停止编写消息或 按下键盘向下键,控制转到消息的开头。当键盘 向下键单击,编辑器控件转到消息的开头。 我在编辑器propertyChanged上使用此方法

   double iScrollPosition = 0;
   await  editorScrollView.ScrollToAsync(0, iScrollPosition, true);
   <Frame Margin="10">
        <ScrollView x:Name="editorScrollView" >
           <Editor x:Name="txtEditor" 
                   HeightRequest="110" 
                   Placeholder="Write message here" 
                   PropertyChanged="OnStatusLabelPropertyChanged" />
        </ScrollView>
   </Frame>                                                                             
double iScrollPosition=0;
等待editorScrollView.ScrollToAsync(0,iScrollPosition,true);

任何人都可以帮我做这个

你可以使用CustomRenderer并在特定平台上实现它

在Android中
使用Android.Content;
使用xxx.Droid;
使用Xamarin.Forms;
使用Xamarin.Forms.Platform.Android;
使用静态Android.Widget.TextView;
[assembly:ExportRenderer(typeof(编辑器)、typeof(MyEditorRenderer))]
名称空间xxx.Droid
{
公共类MyEditorRenderer:EditorRenderer
{
公共MyEditorRenderer(上下文):基本(上下文)
{
}
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
if(控件!=null)
{
Control.FocusChange+=Control_FocusChange;
}
}
私有void控件\u FocusChange(对象发送方,FocusChangeEventArgs e)
{
如果(!e.HasFocus)
{
对照组(0);
}
}
}    
}
在iOS中
使用系统;
使用基础;
使用UIKit;
使用Xamarin.Forms;
使用Xamarin.Forms.Platform.iOS;
使用xxx.iOS;
[assembly:ExportRenderer(typeof(编辑器)、typeof(MyEditorRenderer))]
命名空间xxx.iOS
{
公共类MyEditorRenderer:EditorRenderer,IUITextViewDelegate
{
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
if(控件!=null)
{
控制结束+=控制结束;
}
}
私有无效控制\u已结束(对象发送方,事件参数e)
{
var editor=发送方作为UITextView;
ScrollRangeToVisible(新的NSRange(0,0));
}
}
}

检查您只需要在特定的平台项目中添加这两个类。您解决了问题吗?
using Android.Content;
using xxx.Droid;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;
using static Android.Widget.TextView;

[assembly: ExportRenderer(typeof(Editor), typeof(MyEditorRenderer))]
namespace xxx.Droid
{
    public class MyEditorRenderer : EditorRenderer
    {
        public MyEditorRenderer(Context context) : base(context)
        {
        }

        protected override void OnElementChanged(ElementChangedEventArgs<Editor> e)
        {
            base.OnElementChanged(e);

            if(Control!=null)
            {
                Control.FocusChange += Control_FocusChange;
            }
        }

        private void Control_FocusChange(object sender, FocusChangeEventArgs e)
        {
            if(!e.HasFocus)
            {
                Control.SetSelection(0);
            }
        }
    }    
}
using System;


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

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

            if(Control!=null)
            {
                Control.Ended += Control_Ended;
            }

        }

        private void Control_Ended(object sender, EventArgs e)
        {
            var editor = sender as UITextView;

            editor.ScrollRangeToVisible(new NSRange(0,0));
        }
    }
}