2016-04-16 17 views
1

Xamarinを使用してiOSアプリケーションを作成していますが、テーブルビューと検索バーに問題があります。検索バーをクリックしてテキストを入力すると、検索結果ビューコントローラは表示されません適切に動作します - スクロールすると、セルが検索バーと交差します。Xamarin iOSテーブルビューセル交差検索バー

は明確にするために、私は問題を記録しました:

YouTube - iOS Problem

はこれまでのところ、私が働いてアウトしました問題はセクションの数、セクションヘッダに関連していないこと、またはテーブルのヘッダ。この例では

GitHub - TableSearch

に次のコード行を追加します。同じ問題が表示されて完全に今のアイデアのうち、しかし...

次は、例として使用することができます'MainTableViewController.cs'ファイル内の 'ViewDidLoad()'メソッドの終了により、問題がより明白になります。

searchController.SearchBar.SearchBarStyle = UISearchBarStyle.Minimal;

下の画像を見てみるとEDIT

、私は理想的な上部領域を削除するか、または縮小する必要があります(iOSのナビゲーションバー用のスペースのようです何):

Annotated

+0

あなたはあなたのコードのいずれかを投稿することができますか? –

答えて

2

はあなたを持っていますあなたが使用しているレイアウトと同じXamarin hereのサンプルを見て、検索バーの設定方法を比較してみてください。私は今、あなたが何を意味するか見

EDITは、私は、背景色は検索バー上に透明であり、あなたがそれを望むことはないとして、これはiOSのバグだと思います。 私は、ステータスバーをカバーし、白に背景色を設定するには、別のビューを追加しました:

 searchController.SearchBar.SearchBarStyle = UISearchBarStyle.Minimal; 

     searchController.SearchBar.BackgroundColor = UIColor.White; 
     var frame = searchController.SearchBar.Frame; 
     frame.Height = searchController.SearchBar.Frame.Height + 22; 
     frame.Y = searchController.SearchBar.Frame.Y - 22; 
     var bckGRound = new UIView (frame); 
     bckGRound.BackgroundColor = UIColor.White; 
     searchController.SearchBar.InsertSubview (bckGRound, 0); 

UPDATE 私はあなたのシナリオのためにあなたがちょうどそう、これをカバーするためにビューを追加することができないことを実現私はそうのような検索バーするためにぼかしを加えることを検討していました:

 var frame = searchController.SearchBar.Frame; 
     frame.Height = searchController.SearchBar.Frame.Height + 44; 
     frame.Y = searchController.SearchBar.Frame.Y - 22; 

     var blurryBackGround = new UIView (frame); 
     if (!UIAccessibility.IsReduceTransparencyEnabled) 
     { 
      blurryBackGround.BackgroundColor = UIColor.Clear; 
      var blureffect = UIBlurEffect.FromStyle (UIBlurEffectStyle.Light); 
      var blureffectview = new UIVisualEffectView (blureffect); 
      blureffectview.Frame = frame; 
      blurryBackGround.AddSubview (blureffectview); 
     } 
     else 
     { 
      blurryBackGround.BackgroundColor = UIColor.Black; 
     } 
     searchController.SearchBar.InsertSubview (blurryBackGround, 0); 

enter image description here

UPDATE 2

テーブルに移動does notのあなたの背景には、あなただけの検索バーがこのコードの検索バー用の背景画像を設定し、その後カバー背景画像セクショントリミングして逃げることができるかもしれない場合は、次の

 searchController.SearchBar.SetBackgroundImage (new UIImage ("image.jpg"), UIBarPosition.TopAttached, UIBarMetrics.Default); 
+0

私はコードを見てきましたが、これはこれと同じ問題を抱えているようです - あなたが検索を行い、スクロールアップすると、検索結果は検索バーの上に出て行きます。 'SearchBarStyle'プロパティを 'UISearchBarStyle.Minimal'に変更すると、より目立つようになります。しかし、このサンプルでは、​​結果が入る奇妙なギャップ(ヘッダービューかもしれないと思ったもの)が、iOSナビゲーションバーのスペースと思われるようです... – Luke

+0

私は本当にバックグラウンドを保つ必要があります検索バーの領域が透明になっています...検索バーの背景色(入力する場所)を白に変更できますが、これは問題を緩和するのに役立ちます。 – Luke

+1

は背景をぼかすでしょうか? –

0

これはUISearchControllerのデフォルト動作です。行がsearchBarの後ろに表示されないように背景色を変更することはできますが、これは必要な動作ではありません。もう一つの選択肢は、ViewControllerにUISearchBarを実装することです。これは、私が持っているものであり、あなたが探している振る舞いである行をスクロールします。お役に立てれば。

参照してください:https://github.com/xamarin/monotouch-samples/tree/master/SearchDemo/SearchDemo

+0

私のプロジェクトは異なると思います - 私は検索ディスプレイコントローラー用のビューコントローラーを使用していますが、これはナビゲーションバーがどこから来たのか - どのように 'TopBar'を 'None' )ビューコントローラのために?ビューコントローラが 'null'を返すため 'NavigationController'としてナビゲーションバーを非表示に設定することはできません。 – Luke

+0

@ルークどのように検索ビューコントローラをプッシュ/ロードしていますか?あなたが望むのは、NavigationControllerのNavigationBarHiddenプロパティです。 – DannyC

+0

'UIViewController searchResultsViewController =新しいUIViewController();'と 'searchDisplayController =新しいUISearchDisplayController(tblTask​​Search、searchResultsViewController);' - 'NavigationController'プロパティが 'null'を返すので、 'NavigationBarHidden'プロパティを設定することはできません。 – Luke