2017-06-14 90 views
4

我使用Xamarin.Forms來構建我的應用程序。在登錄頁面中,我有以下佈局Xamarin Forms IOS「Entry」是不可編輯的

<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> 

當Android模擬器上運行我可以在「EntryLine」輸入文本,一切似乎很好地工作。 但是,當我試圖在IOS模擬器上運行它時,文本變得可以使用,即只讀。基本上在IOS模擬器StackLayout裏面的一切都變成了「只讀」 我也嘗試使用表單「Entry」而不是FormsToolKit.EntryLine,但沒有結果。 我在上面的代碼本身面臨一個問題,在xaml中添加一個「Entry」,並在IOS模擬器上測試時工作正常。 已經在Xamarin論壇上提出過同樣的問題,但還沒有找到任何答案。

編輯1 - 增加了完整的堆棧佈局。

使用 -

  • 的Visual Studio 2017年時,Windows 10,Xamarin - 2.3.4.247 FormsToolKit - 1.1.18 IOS - MacBook Air的10​​.3
+0

是否有可能有一個網格覆蓋入口?在Android網格上輸入透明 - 在iOS上不是。嘗試以某種方式給出一個敲擊監聽器,並檢查該敲擊是否被擡起(或者在它的位置添加一個按鈕並查看是否可以敲擊) – woelliJ

+0

as @woelliJ提到;有些東西可能會重疊。請發佈完整的佈局,看看有什麼可能是錯的。 –

+0

@woelliJ - 是的,stackLayout在一個網格內。 <網格 RowSpacing = 「{StaticResource的MediumSpacing}」 ColumnSpacing = 「{StaticResource的MediumSpacing}」> < /Grid.RowDefinitions> 我試着在它的位置添加一個按鈕,該按鈕也被禁用。 – mdnaushad

回答

0

<AbsoluteLayout>重疊的內容和捕獲所有的輸入事件。您必須嘗試將其IsVisible屬性設置爲false(或嘗試使用InputTransparent屬性)。至少只要活動指標沒有運行。

(如果不工作,你可以嘗試用iOS上設置輸入transparancy具體效果(或自定義渲染器)來處理它)

(您也可以考慮不把它的滾動視圖內,因爲它會最終滾動)

+1

實際上是是罪魁禍首。 我剛剛刪除它,現在我可以在「Entry」標籤中進行編輯和輸入。 非常感謝! – mdnaushad