2017-06-14 42 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