Как создать действие для UIReturnKeyType.Done в UITextView в xamarin iOS

Я пытаюсь изменить кнопку возврата клавиатуры UITextView на кнопку "Готово".

Мне нужно закрыть клавиатуру, когда я нажимаю кнопку «Готово».

Я создал UITextView и заменил кнопку возврата на кнопку "Готово".

это мой код

PhotoTitle = new UITextView
{
    TranslatesAutoresizingMaskIntoConstraints = false, Editable = true,               AccessibilityIdentifier = "PhotoTitle", 
ReturnKeyType = UIReturnKeyType.Done
}

Клавиатура показывает кнопку «Готово». если я нажму, он будет вести себя как кнопка возврата.

И я не могу найти конкретное событие для огня при нажатии кнопки «Готово».


person Chandu Ranwala    schedule 13.06.2019    source источник


Ответы (2)


Прежде всего, вы должны помнить, что UITexiView — это прокручиваемый виджет пользовательского интерфейса. Итак, когда вы меняете клавишу Return по умолчанию на клавиатуре на кнопку Готово, вы скрываете возможность перехода на новую строку внутри вашего UITextView. Поэтому я предлагаю, если вы используете UITextView и вам нужна кнопка Готово с сохранением клавиатуры по умолчанию, вы должны добавить UIToolBar поверх клавиатуры, где вы можете поместить Готово< Кнопка /em>.

Поскольку я не знаю о вашей реальной потребности, которая может не нуждаться в переходе на новую строку и просто нужно выйти из клавиатуры, когда пользователь нажимает кнопку «Возврат/Готово», вот как вам нужно это сделать.

    public override void ViewDidLoad()
    {
        base.ViewDidLoad();

        TextView.WeakDelegate = this;
    }

    [Export("textView:shouldChangeTextInRange:replacementText:")]
    public bool ShouldChangeText(UITextView textView, NSRange range, string text) 
    {
        if (text.Equals("\n"))
        {
            TextView.ResignFirstResponder();
            return false;
        }

        return true;
    }
person AnujAroshA    schedule 14.06.2019

Это довольно просто — подписаться на событие ShouldReturn события UITextField с помощью делегата или анонимного метода, который будет вызывать ResignFirstResponder в поле.

Вы можете проверить это пример проекта, который показывает, как это сделать

this.txtDefault.ShouldReturn += (textField) => {
textField.ResignFirstResponder();
return true;
};
person FreakyAli    schedule 13.06.2019
comment
Разве мы не можем сделать это с помощью UITextView - person Chandu Ranwala; 14.06.2019
comment
Либо нормально, я думаю, если событие присутствует - person FreakyAli; 14.06.2019
comment
событие отсутствует в UITextView, поэтому есть ли другой способ сделать это с помощью UITextView? - person Chandu Ranwala; 14.06.2019
comment
Вы проверили пример в Github? - person FreakyAli; 14.06.2019