問題タブ [uisearchdisplaycontroller]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
7297 参照

iphone - UISearchBar と UITableView を使用した UISearchDisplayController - 「ライブ結果」を回避する方法は?

UISearchDisplayController と UITableView を使用して SearchBar を実装し、検索結果を表示しました。 libxml2 と xpath を使用して HTML Web サイトを解析し、ソース コードで必要なコンテンツを検索しています。私は ObjC を初めて使用するので、Apple が提供するサンプル プロジェクトの TableSearch を使用して検索および表示部分を開始しました。これですべてが正常に機能します。Web サイトから特定のコンテンツを解析し、Web サイトに表示されるとおりにそれらを正しく組み合わせて、異なる TableView 行のビューに表示することができます。ユーザー入力を使用して、特定の Web サイトを検索したいと考えています。次の問題しかありません。

プロジェクトTableSearch (クラス MainViewController.m) を見ると、「filteredListContent」が更新され、TableView がリロードされ、ユーザーが入力すると自動的に表示されることがわかります。

私の実装を解析と検索に使用する場合、ある程度のメモリが必要であることが想像できます。また、ユーザーが「ライブ結果」を表示するために入力中に繰り返し呼び出される場合は特に重要です。ブロックの最初の行のみを解析と検索 (URL を使用して NSData オブジェクトを初期化) に使用すると、SearchBar が遅れ始め、各文字が入力された後に数秒遅れます。ブロック全体を使用すると、アプリがクラッシュします。私の質問は次のとおりです。

検索が実行される前に、キーボードの「検索」または「戻る」ボタンがタップされるのをどのように待つことができますか、またはボタンがタップされたかどうかをどこでどのように確認できますか? このおそらく些細な質問で申し訳ありません。

0 投票する
2 に答える
3448 参照

iphone - プログラムで searchDisplayController を使用してテーブル ビューの SearchBar を編集しない

テーブルのヘッダー ビュー内に検索バーがあるテーブルビューを作成しようとしています。searchDisplayController を使用してすべてを管理したいと思います。私はプログラムですべてを作成しました (IB に慣れていません) すべての正しいプロパティを設定しようとしていますが、テーブルが表示されたときにテキストを編集できないため、何かが欠けているようです。検索バーをクリックしてアニメーションを表示します。コードの一部を次に示します。

検索バーを単独で使用する場合は、デリゲート プロトコルを処理する必要があることはわかっていますが、Apple のサンプル コードに見られるように、searchDisplayController が管理していると思います。(IBで構築)。

なにか提案を?ありがとう、アンドレア

0 投票する
2 に答える
8711 参照

iphone - 検索メソッドの反復が終了した後の UISearchDisplayController の searchResultsTableView の再読み込み/表示

Apple のサンプル iOS プロジェクトTableSearchのコードを変更して、コンテンツを解析して Web サービスを検索するために使用します。私が実装したものはすべて、SearchDisplayController の SearchBar を使用して検索を実行するときの 1 つの醜い詳細を除いて、正常に機能します。「検索」ボタンがタップされたときに最初に検索機能を呼び出すように、SearchDisplayController の動作を変更しました。

問題は、検索の反復 (NSOperationQueue でバックグラウンドで実行される) が終了したときに、(searchDisplayController の)「searchResultsTableView」が自動的に表示されないか、結果のコンテンツが割り当てられないことです。その後、SearchBar のテキストを変更するか、検索フィールドに触れたときに表示されるビューから [キャンセル] ボタンをタップすると (TableSearch を参照)、正しい TableView が検索結果とともに表示されます。このステップは、検索操作が終了した直後、つまり対話する前に実行したいだけです。この段階では、「No Results」ラベルが現在表示されています。メソッド「filterContentForSearchText」および「shouldReloadTableForSearchString」は、元の TableSearch プロジェクトから変更されていません。

SearchDisplayController とその属性のさまざまなクラス参照を調べましたが、最終的な解決策はまだ見つかりませんでした。

NSOperation が終了した後に確実に繰り返されるセクションで次のことを試しましたが、問題は解決していないようです。

これらの操作は両方とも、表示したい正しいビューを持っていますが、ビューが再び非表示になるように状態を変更するまで、スクロールは無効になります。ただし、TableView セルを選択することは可能です。私は基本的にスクロールを有効にしてこれを持ちたい...

よろしくお願いいたします。

0 投票する
2 に答える
3717 参照

iphone - UISearchDisplayController が非アクティブなときに検索語を表示したままにする

私のアプリはUISearchDisplayController. ユーザーが検索語を入力したときに、検索バーに表示されたままにしたい。これは、ユーザーが一致した結果の 1 つを選択した場合には機能しますが、ユーザーが [検索] ボタンをクリックした場合には機能しません。

これは機能します:

しかし、テキストで同じことをすると-searchBarSearchButtonClicked:、検索バーに残りません。この状況でこれを達成する方法についてのアイデアはありますか?

関連して、検索バーのテキストを設定すると(ただし、UISearchDisplayController非アクティブのままにする)、searchResultsTableViewの表示がトリガーされます。ユーザーが検索バーをタップしたときにのみ表示したい。

編集:常にsearchResultsTableViewを表示せずに検索バーのテキストを設定する回避策を見つけました:

より良い提案はまだ歓迎されています!

0 投票する
2 に答える
5628 参照

iphone - NSComparisonResultは文字列の一部を検索しますか?

SearchControllerでNSComparisonResultを使用しています。

文字列を検索すると、その文字列で始まる場合にのみ結果が見つかります。

レコードは「マイアートギャラリー

  • 「マイアートギャラリー」を検索<---見つかりました

  • 「私の」を検索<---見つかりました

  • 「アート」を検索<---見つかりません

  • 「ギャラリー」を検索<---見つかりません

上に示したように文字列の一部を見つけることができるようにコードを変更するにはどうすればよいですか?

0 投票する
2 に答える
613 参照

iphone - iPhone - tableView で繰り返される UITableViewController と Core Data 行

私は Cocoa と Core Data に不慣れで、奇妙な問題に遭遇しました。Core Data モデルを正常に作成し、データをインポートし、UI (ナビゲーション コントローラー、searcDdisplayController を使用した tableViewController) を作成しましたが、1 つの問題で立ち往生しています。UITableViewController ( nibファイルにUITableViewなし)を実装すると、 fetchedResultsControllerからフェッチされた結果が奇妙になります。

ただし、追加することでこの問題を修正できました@synthesize tableView; .mファイルで。

次に、別の問題が発生しました。行をクリックして詳細ビューを押してから、ナビゲーションコントローラーの戻るボタンをクリックすると、tableView で選択された行がまだ選択されています。

何が悪いのかはっきりしていることを願っています。要約してみましょう: @synthesize tableView; を配置しない場合。実装ファイルの上部で、行の選択解除は正常に機能していますが、結果は間違っています - tableView で 8 行 (500 行中) が繰り返されています。をファイルに入れた場合@synthesize、tableView のデータは正しいのですが、ナビゲーション コントローラーで tableView に戻ったときにアニメーションが表示されません。

また、 listviewcontrollerの nib ファイルにUITableViewを配置しようとしましたが、結果は同じで、行の選択が解除されませんでした。デリゲートの行の選択も解除しようとしましたが、 nullです。viewWillAppearindexPath of the indexPathForSelectedRow

ああ、私はNSFetchedResultsControllerを使用しています。私が言ったように-フェッチされた結果は正しいですが、テーブルビューに適切に供給されていないようです(合成されていない場合..)

ありがとう!

0 投票する
2 に答える
6962 参照

iphone - UISearchDisplayController - キャンセルボタンクリック時のメソッド

キャンセルボタンを表示する UISearchDisplayController があります。ユーザーがキャンセル ボタンをクリックしたときにメソッドを呼び出したいと思います。これを行う方法はありますか?

0 投票する
1 に答える
1117 参照

iphone - UISearchDisplayController - オーバーレイをクリックすると、メソッドが呼び出されますか?

ユーザーが暗いオーバーレイをクリックしたときに呼び出されるデリゲート メソッドはありますか?これにより、基本的に UISearchDisplayController からファーストレスポンダーのステータスが削除されますか? (ドキュメントで見つけることができません。)

ユーザーが黒いオーバーレイをクリックすると、キーボードが非表示になることを知りたいです。

0 投票する
1 に答える
2390 参照

iphone - UISearchDisplayControllerを使用して検索をプリロードまたは初期化するにはどうすればよいですか?

InterfaceBuilderのUITableViewControllerにUISearchDisplayControllerを追加しました。searchBar: searchBar textDidChange: searchTextテーブルのデータ配列を再生成してを呼び出すメソッドを追加することで、非常に簡単に機能させることができましたreloadData

ただし、(X)をタッチしてクリアする方が、もう一度入力するよりもはるかに簡単なので、ユーザーが次に検索バーをタッチしたときに、前回の検索を表示したいと思います。しかし、私はそれをすることができません。以下は私が試したコードです:

最後の検索テキストは、次に検索をタッチしたときに検索バーに適切に表示され、「カーソル」が最後に配置されていても検索結果が表示されず、元のコンテンツの暗いビューだけが表示されていることに驚きました。検索フィールドが空でした。文字を入力するとすぐに検索結果が更新されます。

私は[self.searchDisplayController.searchResultsTableView reloadData]それぞれに同等のものを入れてみました:

しかし、違いはありませんでした...何かを入力するまでは空白にしてください。

プリロードされた検索結果を取得する方法を知っている人はいますか?

0 投票する
1 に答える
811 参照

ios - UISearchDisplayControllerでの結果の表示が5秒遅れます

MyUISearchDisplayControllerはを介して非同期検索を実行しますNSOperationQueue

NSOperationただし、結果テーブルは、呼び出し後約5秒まで視覚的に更新されません[searchDisplayController.searchResultsTableView reloadData]

私のCustomerSearchOperationは、次のようにtableViewを更新します。