2016-12-16 3 views
0

У меня есть запись в XAML следующим образом:клавиатура отображается только при входе двойного постукивания

<Entry x:name="userNameEntry" Placeholder="Name"/> 

В моем xaml.cs файл я написал следующий код в конструкторе страницы:

userNameEntry.Focused += (sender, e) => 
{ 
userNameEntry.Placeholder = ""; 
} 

Всякий раз Я коснуюсь поля ввода, заменяемый текст заменяется, но клавиатура не отображается. Я должен снова нажать, чтобы открыть клавиатуру.

Как заменить заполнитель и показать клавиатуру?

+1

Почему вы удаляете замещающий текст? Он исчезает сам по себе и снова показывает, когда поле пусто. – irreal

+0

Заполнитель заменяется только тогда, когда я начинаю печатать. Я хочу, чтобы заполнитель был удален, когда запись была сфокусирована. –

ответ

0

Я думаю, что происходит, это вид гонки состояние здесь. Поэтому я думаю, что вам нужно реализовать событие onFocus из Xaml и обработать его из кода позади.

<Entry x:name="userNameEntry" Placeholder="Name" Focused="userNameEntry_OnFocused"/> 

и в коде позади

private void userNameEntry_OnFocused(object sender, FocusEventArgs e) 
{ 
    userNameEntry.Placeholder = ""; 
} 

Попробуйте, что если он будет работать :) Хотя сам я бы не удалить заполнитель, прежде чем пользователь начинает вводить, потому что это бы он просто работает.

+0

спасибо, что ответили. Но то же самое происходит, клавиатура всплывает только при двойном нажатии. –

0

Я могу воспроизвести найденный вами сценарий. Проверив EntryRenderer из Xamarin кода формы можно найти, что

_textView.Hint = Element.Placeholder;

Hint свойства от андроида родной EditText и целевая визуализации объект EntryEditText, который наследует от EditText в андроиде родной.

Так что я создал проект Xamarin андроида и использовать EditText с намеком, как следующий код:

public class MainActivity : Activity 
{ 
    EditText et; 
    protected override void OnCreate(Bundle bundle) 
    { 
     base.OnCreate(bundle); 
     // Set our view from the "main" layout resource 
     SetContentView (Resource.Layout.Main); 
     et = (EditText)FindViewById(Resource.Id.edittext); 
     et.Click += Et_Click; 
    } 

    private void Et_Click(object sender, System.EventArgs e) 
    { 
     et.Hint = ""; 
    } 
} 

Когда я нажимаю EditText шоу клавиатуры и одновременно намек исчез.

Я также создал рендер клиента входа как следующий код:

портативного кода

public class MyEditText : View 
{ 

} 

андроид проекта код

public class MyEditTestRenderer : ViewRenderer<MyEditText, EditText>,Android.Views.View.IOnClickListener 
{ 
    EditText et; 
    protected override void OnElementChanged(ElementChangedEventArgs<MyEditText> e) 
    { 
     base.OnElementChanged(e); 

     if (e.OldElement == null) 
     { 
      // perform initial setup 
      et = new EditText(this.Context); 
      SetNativeControl(et); 
     } 
     et.Click += Et_Click; 
     et.Hint = "name"; 
     // et.SetOnClickListener(this); 

    } 
    private void Et_Click(object sender, EventArgs e) 
    { 
     et.Hint = ""; 
    } 
} 

Но это может не обнаруживать событие щелчка, когда я сначала нажимаю EditText. Hint исчез, когда я второй раз нажимаю EditText.

Вы можете сообщить об этой проблеме на https://bugzilla.xamarin.com/

Смежные вопросы