Xamarin按钮在iOS模拟器中可见,但在设备上不可见

时间:2016-05-17 15:13:26

标签: xamarin xamarin.ios xamarin.forms

我是Xamarin的新手,但知道一些iOS,让其他人的代码倾倒在我的膝盖上以修复一些错误。我已经搜索了很多,但我无法解决这个问题。

Android上部署的一切都很好,部署在iPhone 4 / iOS 7.1.2上,并在iOS模拟器中模拟为iPhone 6 / iOS 9.3。

问题

btnNews按钮在iOS模拟器(iPhone 6 / iOS 9.3)中可见,但在代码部署到iPhone 6 / iOS 9.3.1时则不可用。

便携式项目中的MainPage.xaml

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:c="clr-namespace:Cookies;assembly=Cookies"
             x:Class="MyCompany.MainPage" Title="MyCompany">
  <Grid ColumnSpacing="1" RowSpacing="0">
    <Grid.RowDefinitions>
      <RowDefinition Height="*" />
      <RowDefinition Height="50" x:Name ="buttonsRow"/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
      <ColumnDefinition Width="*"/>
      <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>
    <c:CookieWebView x:Name="webView" Grid.Row="0" Grid.ColumnSpan="2">
    </c:CookieWebView>
    <ActivityIndicator x:Name="activityIndicator"
          VerticalOptions="FillAndExpand" HorizontalOptions="Center" Grid.Row="0" Grid.ColumnSpan="2" />
    <Button x:Name="btnNews" Text="back to news list" BackgroundColor="#E15F59" BorderRadius="0" BorderColor="#E15F59"
            TextColor="White" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" BorderWidth="0" IsVisible="False"
            HorizontalOptions="FillAndExpand"/>
  </Grid>
</ContentPage>

MainPage.xaml.cs MainPage()

namespace MyCompany
{
    public partial class MainPage : ContentPage
    {
        private Button _btnNews;
        private ActivityIndicator Loader { get; set; }
        private RowDefinition _row;

        public const string URL_NEWS = "http://www.mycompany.com/";
        public const string QUERY = "master=app";
        public static CookieWebView WebView;
        public static string CurrentUrl;
        bool externalUrlClicked = false;

        public MainPage(string url = null)
        {
            InitializeComponent();

            // cookies common : https://github.com/seansparkman/CookiesWebView + nuget package CookiesWebView nuget : https://www.nuget.org/packages/CookieWebView/1.0.0
            // ios: http://stackoverflow.com/questions/29768019/cookies-in-web-view-xamarin-ios

            NavigationPage.SetHasNavigationBar(this, false);

            WebView = this.FindByName<CookieWebView>("webView");
            _row = this.FindByName<RowDefinition>("buttonsRow");
            Loader = this.FindByName<ActivityIndicator>("activityIndicator");

            WebView.Navigated += _webView_Navigated;
            WebView.Navigating += WebView_Navigating;

            var source = new UrlWebViewSource();
            source.Url = GetUrl(!string.IsNullOrEmpty(url) ? url : URL_NEWS);
            WebView.Source = source;

            ReadCookiesFromSettings();

            _btnNews = this.FindByName<Button>("btnNews");
            _btnNews.Clicked += _btnNews_Clicked;

            // Keep free from iPhone status bar
            this.Padding = new Thickness(0, Device.OnPlatform(20, 0, 0), 0, 0);
        }
    }
}

MainPage.xaml.cs _webView_Navigated()

只要在Web视图中单击链接,就会运行此方法。如果网址是&#34;新闻项目页面&#34;然后应该显示btnNews(&#34;返回新闻列表&#34;),否则应隐藏btnNews。我设置了断点来验证正确的if / else块是否在适当的时间运行。部署的应用程序使用与模拟应用程序相同的URL / Web内容。

public void _webView_Navigated(object sender, CookieNavigatedEventArgs args)
{
    if (externalUrlClicked)
    {
        args.Url = CurrentUrl;
        externalUrlClicked = false;

        return;
    }
    else
        CurrentUrl = args.Url;

    if (args.Url != GetUrl(URL_NEWS))
    {
        _row.Height = 50;
        _btnNews.IsVisible = true;
    }
    else
    {
        _row.Height = 0;
        _btnNews.IsVisible = false;
    }

    try
    {
        var cookie = WebView.Cookies[Settings.CookiesSettingsKey];

        Settings.CookiesSettings = cookie.Value;
    }
    catch (Exception)
    {
    }

    Loader.IsVisible = Loader.IsRunning = false;
}

在原生iOS应用程序中,我会开始调查布局和setNeedsDisplay之类的东西,但我还没有找到如何使用Xamarin做到这一点。

感谢您的帮助!

0 个答案:

没有答案