при использовании тега редактора в Xamarin.forms измените значение клавиши «Следующая стрелка» на «Готово». - PullRequest
0 голосов
/ 11 октября 2018

Я хочу, чтобы следующая клавиша со стрелкой говорила «Готово», когда выделено поле «Редактор».

Здесь, на изображении отмеченная клавиша «Следующая клавиша со стрелкой» имеет значение «Готово»

Я ссылался на некоторые ссылки по этому поводу, но, похоже, ни одна из них не работает в моемcase ... Это один из таких Изменить возврат на следующий / готовый ключ в общем проекте Xamarin Forms

Здесь они расширяют свойство Entry, где, как и в моем случае, мне нужно расширитьСвойство Editor, когда я пытаюсь расширить Свойство Editor, не показывает ошибок, но клавиатура выглядит как раньше

Мой код:

public class PlaceholderEditorRenderer : EditorRenderer
{
    public PlaceholderEditorRenderer()
    {
    }

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

        PlaceholderEditor placeHolderEditor = (PlaceholderEditor)this.Element;

        if (this.Control != null)
        {
            if (placeHolderEditor != null)
            {
                SetReturnType(placeHolderEditor);

                Control.EditorAction += (object sender, EditText.EditorActionEventArgs args) =>
                {
                    if (placeHolderEditor.ReturnKeyType == ReturnKeyTypes.Done)
                        placeHolderEditor.Unfocus();

                    // Call all the methods attached to custom_entry event handler Completed
                    placeHolderEditor.InvokeCompleted();
                };
            }
        }

        if (e.NewElement != null)
        {
            var element = e.NewElement as PlaceholderEditor;
            this.Control.Hint = element.Placeholder;
        }
    }

    protected override void OnElementPropertyChanged(
        object sender,
        PropertyChangedEventArgs e)
    {
        base.OnElementPropertyChanged(sender, e);

        if (e.PropertyName == PlaceholderEditor.PlaceholderProperty.PropertyName)
        {
            var element = this.Element as PlaceholderEditor;
            this.Control.Hint = element.Placeholder;
        }
    }

    private void SetReturnType(PlaceholderEditor entry)
    {
        ReturnKeyTypes type = entry.ReturnKeyType;

        switch (type)
        {
            case ReturnKeyTypes.Go:
                Control.ImeOptions = ImeAction.Go;
                Control.SetImeActionLabel("Go", ImeAction.Go);
                break;
            case ReturnKeyTypes.Next:
                Control.ImeOptions = ImeAction.Next;
                Control.SetImeActionLabel("Next", ImeAction.Next);
                break;
            case ReturnKeyTypes.Send:
                Control.ImeOptions = ImeAction.Send;
                Control.SetImeActionLabel("Send", ImeAction.Send);
                break;
            case ReturnKeyTypes.Search:
                Control.ImeOptions = ImeAction.Search;
                Control.SetImeActionLabel("Search", ImeAction.Search);
                break;
            case ReturnKeyTypes.Done:
                Control.ImeOptions = ImeAction.Done;
                Control.SetImeActionLabel("Done", ImeAction.Done);
                break;
            default:
                Control.ImeOptions = ImeAction.Done;
                Control.SetImeActionLabel("Done", ImeAction.Done);
                break;
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...