Xamarin iOS: Entry Unfocus event nem triggerelődik, ListView-el.

Ha egy Entry épp focus alatt van, és úgy választunk egy listaelemet a ListView-ből, az Entry Unfocus eventje nem fog triggerelődni. Ez azért van, mert a ListView a Touch eseményt ilyenkor elnyeli. Az én esetemben a megoldás ListView mögött egy háttérszínnel rendelkező grid volt, ami képes touch eventeket elkapni. A ListView InputTransparent tulajdonságának True-ra állításával ez a probléma megoldódott, mert az alatta lévő grid fókuszt kapott, és “mintha kikattintottunk volna” a gridből, az entry focusa megszűnt.

        <ListView
            x:Name="list"
            BackgroundColor="#393939"
            ItemTapped="list_ItemTapped"

            InputTransparent="True"

            ItemsSource="{Binding Path=AutoCompleteItems, Source={x:Reference UserControl}}"
            SelectedItem="{Binding Path=SelectedAddress, Source={x:Reference UserControl}}"
            SeparatorVisibility="None">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <usercontrols:AddressSelectorAutoCompleteItemDataTemplate />
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>

Próbáltam a ListView ItemSelectedjében unfocusolni az Entry Controlokat, azonban ez nem hozott sikert.

This content has 4 years. Some of the information in this post may be out of date or no longer work. Please, read this page keeping its age in your mind.

KeyboardFlags.CapitalizeWord nem működik iOS-en

Ha úgy vesszük észre, hoyg a Keyboard.Create nem működik CapitalizeWord enumértékkel iOS-en, de Androidon igen, akkor gyanakodjunk a következőre:

FullNameEntry.Keyboard = Keyboard.Create(KeyboardFlags.CapitalizeWord);

A készülék beállításai között, az Általános / Billentyűzet menüpont alatt, ha nincs bekapcsolva az Auto-Capitalization, azaz az Automata nagybetűk funkció, az iOS figyelmenkívűl hagyja az általunk kódbol beállított értéket.

This content has 4 years. Some of the information in this post may be out of date or no longer work. Please, read this page keeping its age in your mind.

AppStore publish error: ITMS-90809 (Deprecated API Usage WebView-re [Xamarin])

Alkalmazás publikálásánál az AppStore-ban a következőt jelzi vissza az Apple:

ITMS-90809: Deprecated API Usage - Apple will stop accepting submissions of apps that use UIWebView APIs . See https://developer.apple.com/documentation/uikit/uiwebview for more information.

Ez azért van, mert a Xamarin Forms WebView implementációja a Xamarin Forms 4.4-es verziójánál kisebb verziókban a UIWebView-t használja platformspecifikus implementációként. (Forrás: https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/webview?tabs=windows#performance)

"Therefore, since Xamarin.Forms 4.4, the Xamarin.Forms WebView is implemented on iOS by the WkWebView class, which supports faster browsing."

Főverzió frissítése után nem szabad dobnia a hibát a publikálásnál. Az alkalmazás publikálása ettől függetlenül végbemegy, amennyiben csak ez a hiba

This content has 4 years. Some of the information in this post may be out of date or no longer work. Please, read this page keeping its age in your mind.

Xamarin Forms Maps: Nagyításra szánt gombok eltűntetése

Androidon default megjelennek a Xamarin.Forms.Maps.Map használata esetén a nagyításra szánt + és – gombok, illetve a felhasználó aktuális pozíciójára mozgató gomb.
Ezeknek eltűntetéséhez egy CustomMapRenderer-t kell létrehozni, és az Androidos rendererben be kell állítani a térképen, hogy ne jelenlítse meg ezeket a plusz gombokat.

Xamarin Forms kód:

public class CustomMap : Map
    {
        public CustomMap(MapSpan region) : base(region)
        {
        }
    }

Xamarin.Android kód:

[assembly: ExportRenderer(typeof(CustomMap), typeof(CustomMapRenderer))]

namespace SampleApp.Droid.Renderers
{
    public class CustomMapRenderer : MapRenderer
    {
		protected override void OnMapReady(GoogleMap map)
		{
			base.OnMapReady(map);
			// Nagyításhoz gombok 
			map.UiSettings.ZoomControlsEnabled = false;
			// Saját helyzet gombok
			map.UiSettings.MyLocationButtonEnabled = false;
		}
    }
}
This content has 4 years. Some of the information in this post may be out of date or no longer work. Please, read this page keeping its age in your mind.

Word Capitalisation Xamarin Forms Entryben

Amennyiben azt szeretnénk, hogy minden szóköz leütése után automatikusan nagybetűvel kezdje a szavakat a készülék-billentyűzet abban az esetben el kell nevezni az Entry-t, jelen esetben az Entryből származtatott UserControlt.

<blackandyellowdesign:UnderlinedEntryWithLabelOnRight
                    x:Name="FullNameEntry"
                    Placeholder="{markupextensions:Multilanguage TranslationKey=PlaceholderRegisterViewName}"
                    Text="{Binding Path=FullName}" />

Így hivatkozható CodeBehindban FullNameEntry-ként.

A konstruktorban (vagy tetszőleges helyre, valamilyen trigger esetén) pedig be kell állítani a Keyboard tulajdonságát, a Keyboard osztály statikus “Create” metódusának meghívásával.

        FullNameEntry.Keyboard = Keyboard.Create(KeyboardFlags.CapitalizeWord);
This content has 4 years. Some of the information in this post may be out of date or no longer work. Please, read this page keeping its age in your mind.