2017-06-14 19 views
4

Ich benutze Xamarin.Forms, um meine App zu erstellen. In der Login-Seite, habe ich folgendes LayoutXamarin Forms IOS "Eintrag" ist nicht editierbar

<ScrollView> 
    <Grid 
     RowSpacing="{StaticResource MediumSpacing}" 
     ColumnSpacing="{StaticResource MediumSpacing}"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="*"/> 
     </Grid.RowDefinitions> 

     <!--Two stackLayouts--> 

     <!--StackLayout 1--> 
     <StackLayout Spacing="0" Padding="0"> 
      <!--Three stacklouts here--> 
      <!--First--> 
      <StackLayout> 
       <StackLayout.Spacing> 
        <OnPlatform x:TypeArguments="x:Double" Android="12" iOS="30" WinPhone="12"/> 
       </StackLayout.Spacing> 
       <StackLayout.Padding> 
        <OnPlatform x:TypeArguments="Thickness" Android="32,24,32,24" iOS="16,24,16,24" WinPhone="32,24"/> 
       </StackLayout.Padding> 
       <imagecircle:CircleImage 
        HorizontalOptions="Center" 
        VerticalOptions="Center" 
        WidthRequest="95" HeightRequest="95" 
        BorderColor="{StaticResource Primary}" 
        Aspect="AspectFill" 
        x:Name="CircleImageAvatar"/> 

       <Label HorizontalTextAlignment="Center" 
        HorizontalOptions="FillAndExpand" 
        StyleId="LoginPageIdentifier" 
        LineBreakMode="WordWrap" 
        FontSize="Large" 
        TextColor="{DynamicResource DetailTextColor}" 
        Text="Single Sign On"> 

        <Label.FontSize> 
         <OnPlatform x:TypeArguments="x:Double" Android="15" iOS="15" WinPhone="15"/> 
        </Label.FontSize> 
       </Label> 
      </StackLayout> 
      <!--Second Stack Layout--> 
      <StackLayout> 
       <StackLayout.Padding> 
        <OnPlatform x:TypeArguments="Thickness" Android="32,0" iOS="32,0" WinPhone="32,0"/> 
       </StackLayout.Padding> 
       <StackLayout.Spacing> 
        <OnPlatform x:TypeArguments="x:Double" Android="0" iOS="15" WinPhone="10"/> 
       </StackLayout.Spacing> 
       <toolkit:EntryLine 
        Text="{Binding Email}" 
        Keyboard="Email" 
        HorizontalOptions="FillAndExpand" 
        Placeholder="Email Address" 
        x:Name="EntryEmail" 
        StyleId="EmailTextField" 

        BorderColor="#ECECEC"> 
        <toolkit:EntryLine.HorizontalTextAlignment> 
         <OnPlatform x:TypeArguments="TextAlignment" iOS="Center"/> 
        </toolkit:EntryLine.HorizontalTextAlignment> 
       </toolkit:EntryLine> 

       <toolkit:EntryLine 
        Text="{Binding NamespaceUri}" 
        HorizontalOptions="FillAndExpand" 
        HorizontalTextAlignment="Center" 
        Placeholder="Namespace" 
        StyleId="EmailTextField" 
        Keyboard="Text" 
        BorderColor="#ECECEC"> 
        <toolkit:EntryLine.HorizontalTextAlignment> 
         <OnPlatform x:TypeArguments="TextAlignment" iOS="Center"/> 
        </toolkit:EntryLine.HorizontalTextAlignment> 
       </toolkit:EntryLine> 
      </StackLayout> 
      <!--Third Stack Layout--> 
      <StackLayout> 
       <StackLayout.Padding> 
        <OnPlatform x:TypeArguments="Thickness" Android="32,16,32,0" iOS="32,25,32,0" WinPhone="32,16,32,0"/> 
       </StackLayout.Padding> 
       <StackLayout.Spacing> 
        <OnPlatform x:TypeArguments="x:Double" Android="0" iOS="16" WinPhone="10"/> 
       </StackLayout.Spacing> 
       <Button 
       Text="Sign In" 
       Command="{Binding LoginCommandSso}" 
       HorizontalOptions="FillAndExpand" 
       StyleId="SignInButton" 
       TextColor="White" 
       BackgroundColor="{StaticResource Primary}"> 

        <Button.FontAttributes> 
         <OnPlatform x:TypeArguments="FontAttributes" iOS="Bold"/> 
        </Button.FontAttributes> 
       </Button> 

      </StackLayout> 
     </StackLayout> 

     <!--StackLayout 2--> 
     <!--Contains activity indicator and Corresponding label--> 
     <AbsoluteLayout> 
      <StackLayout 
     Grid.Row="1" 
     Padding="16,0" 
     VerticalOptions="Center" 
     Orientation="Horizontal" 
     HorizontalOptions="Center" 
     AbsoluteLayout.LayoutFlags="PositionProportional" 
     AbsoluteLayout.LayoutBounds="0.5,0.5,-1,-1" 
     IsVisible="{Binding IsBusy}"> 
       <ActivityIndicator IsRunning="{Binding IsBusy}"> 
        <ActivityIndicator.Color> 
         <OnPlatform x:TypeArguments="Color" Android="{StaticResource Primary}"/> 
        </ActivityIndicator.Color> 
       </ActivityIndicator> 
       <Label Text="{Binding Message}" VerticalOptions="Center" HorizontalOptions="Center" /> 
      </StackLayout> 
     </AbsoluteLayout> 
     <!--Stack Layout 3--> 

    </Grid> 
</ScrollView> 

Wenn auf Android Emulator laufen kann ich Eingabetext in „EntryLine“ und alles gut zu funktionieren scheinen. Wenn ich jedoch versuche, es auf IOS-Simulator auszuführen, wird der Text ungenießbar, d. H. Readonly. Grundsätzlich auf IOS-Simulator wird alles in StackLayout "ReadOnly" Ich habe auch versucht, Formulare "Entry" anstelle von FormsToolKit.EntryLine, aber kein Ergebnis. Ich habe ein Problem in oben genannten Code selbst, nur einen "Eintrag" in XAML hinzufügen und Tests auf IOS-Simulator funktioniert gut. Haben bereits die gleiche Frage auf Xamarin Foren gestellt, aber keine Antwort gefunden.

EDIT 1 - Hinzugefügt das komplette Stapellayout.

Verwendung -

  • Visual Studio 2017, 10 Windows Xamarin - 2.3.4.247 FormsToolKit - 1.1.18 IOS - MacBook Air 10,3
+0

ist es möglich, dass irgendwo ein Gitter den Eintrag überlagert? auf Android-Grids sind Eingabe transparent - auf iOS nicht. Versuchen Sie, dem Eintrag auf irgendeine Weise einen Tipp-Listener zu geben und zu prüfen, ob dieser Tipp ausgelöst wird (oder fügen Sie einen Button an seiner Stelle ein und sehen Sie, ob er angetippt werden kann) – woelliJ

+0

als @woelliJ erwähnt; etwas könnte sich überlappen. Bitte posten Sie das gesamte Layout, um zu sehen, was falsch sein könnte. –

+0

@woelliJ - Ja, das StackLayout befindet sich in einem Raster. < /Grid.RowDefinitions> Ich habe versucht, an seiner Stelle eine Schaltfläche hinzuzufügen, die Schaltfläche wird auch deaktiviert. – mdnaushad

Antwort

0

Ihre <AbsoluteLayout> überlappt Ihre Inhalte und fängt alle Eingabe Ereignisse. Sie müssen versuchen, die IsVisible-Eigenschaft auf false zu setzen (oder die InputTransparent-Eigenschaft zu testen). Mindestens so lange, wie der Aktivitätsindikator nicht ausgeführt wird.

(Wenn das nicht funktioniert, können Sie versuchen, es mit einem Effekt umgehen (oder einem benutzerdefinierten Renderer), die Eingangs transparancy auf iOS setzt speziell)

(Sie auch könnte es nicht für in der Scroll-Ansicht platzieren, da würde es schließlich weggescrollt werden)

+1

war eigentlich der Schuldige. Ich habe es gerade entfernt und jetzt kann ich in "Entry" -Tag bearbeiten und eingeben. Vielen Dank! – mdnaushad