2016-10-11 2 views
1

Я только начал работать в Xamarin и пишу приложение для таргетинга на iOS и Android. Я пытаюсь сохранить почти весь свой дизайн пользовательского интерфейса в общей библиотеке между ними, и я начинаю искать строки немного размытыми. Мое текущее требование - отключить автокапитализацию объекта тега «Entry» в XAML. Это что-то, что можно сделать с помощью разметки? Я не могу найти какое-либо свойство, которое поддерживало бы это поведение. Если нет, что мне делать вместо этого?Есть ли способ отключить автоматическую капитализацию Xamarin Forms 'Entry' XAML

+0

Когда я создаю новый 'Entry' и введите в него, то первая буква не капитализируются. Возможно, вы указали конкретный 'Entry.Keyboard' или' KeyboardFlag' в 'Entry'? Либо напрямую, либо, может быть, через стиль/базовый класс? Следующее должно принудительно ввести запись в авто-заглавные буквы, но я не думал, что это произошло без этого флага: 'new Entry {Keyboard = Keyboard.Create (KeyboardFlags.CapitalizeSentence)};' ([source] (https: // developer .xamarin.com/recipes/cross-platform/xamarin-forms/controls/select-keyboard-for-entry/# Sentence_capitalization)) – hvaughan3

+0

Я использую xaml для создания экземпляра Entry, разметка полностью голая, поэтому только . Я могу получить доступ к свойству Entry.Keyboard, но я не вижу никакого очевидного контента, который мог бы внести туда, что изменило бы это поведение. Я запускаю это на симуляторе iOS. Вы создаете свою запись из XAML? Какой симулятор вы используете? –

+0

Отправлено на симулятор iOS (iPhone 4s 8.4). У вас все еще может быть глобальный стиль «Entry», определенный в вашем файле «App.xaml» или определенный в вашей «ContentPage»? – hvaughan3

ответ

2

Вы можете установить Keyboard="Text" - клавиатура Default выполняет капитализацию.

Также проверьте дополнительную клавиатуру settings, которая может быть применена. Они позволяют переключаться с предложениями и прочими вещами.

В качестве альтернативы я рекомендую вам создать простой Effect для UITextField и использовать родную IOS API, чтобы установить флаги нужно (AutocapitalizationType = UITextAutocapitalizationType.None;).

У нас также есть documentation о том, как создать пользовательский рендерер для достижения цели, но с момента появления эффектов это, похоже, немного перебор.

+0

Я пробовал настраивать клавиатуру на «Текст», но результат остался для меня одинаковым - я использую симулятор iOS, и он заглаживает первое письмо каждый раз независимо. Я прочитаю об эффектах, но, полагаю, я немного смущен тем, что делает для меня «общий» вид, если я должен делать пользовательские представления или изменения в каждой операционной системе. Я уверен, что мне не хватает чего-то фундаментального здесь, его ранних дней для меня в этом мире.Ваша часть ответа, похоже, предполагает использование подхода, отличного от XAML, заключается в том, что я неправильно его понимаю? –

1

Если вы планируете использовать эту клавиатуру в количестве или на страницах, вы хотите добавить следующий код в свой ResourceDictionary вашего App.xaml. Если вы хотите использовать его в нескольких местах, но только в одном ContentPage, вы хотите добавить его в ContentPageResourceDictionary. В противном случае вы можете добавить его в каталог Entry.

Также см. here для имеющихся значений KeyboardFlag. Я просто использую None ниже.

При добавлении к ResourceDictionary:

<ContentPage.Resources> 
    <ResourceDictionary> 
    <Keyboard x:Key="NoCapitalizationKeyboard" 
       x:FactoryMethod="Create"> 
     <x:Arguments> 
     <KeyboardFlags>None</KeyboardFlags> 
     </x:Arguments> 
    </Keyboard> 
    </ResourceDictionary> 
</ContentPage.Resources> 

<Entry Keyboard="{StaticResource NoCapitalizationKeyboard}" /> 

Или непосредственно к Entry:

<Entry> 
    <Entry.Keyboard> 
    <Keyboard x:FactoryMethod="Create"> 
     <x:Arguments> 
     <KeyboardFlags>None</KeyboardFlags> 
     </x:Arguments> 
    </Keyboard> 
    </Entry.Keyboard> 
</Entry> 
Смежные вопросы