私のアプリケーションでは、デフォルトのIOS検索バーを使用して検索機能を使用しています。データソース(オリジナルコンテンツ)。私の機能は、検索文字列が空であればデータソース全体を表示することです。私の問題は、デフォルトの検索バーで検索文字列を空にすると、検索ボタンが自動的に状態を隠すことになります。文字列が空であっても検索ボタンを有効にする必要があります。この問題を解決するためのガイドをしてください。デフォルトの検索バーで検索文字列が空の場合に検索ボタンを有効にする
感謝。
私のアプリケーションでは、デフォルトのIOS検索バーを使用して検索機能を使用しています。データソース(オリジナルコンテンツ)。私の機能は、検索文字列が空であればデータソース全体を表示することです。私の問題は、デフォルトの検索バーで検索文字列を空にすると、検索ボタンが自動的に状態を隠すことになります。文字列が空であっても検索ボタンを有効にする必要があります。この問題を解決するためのガイドをしてください。デフォルトの検索バーで検索文字列が空の場合に検索ボタンを有効にする
感謝。
あなたのために役立つかもしれない次のコードを記述してください:)このコード表示検索ボタンあなたは空の文字列を持っている場合。
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
{
[self.searchBar setShowsCancelButton:YES animated:YES];
self.tblView.allowsSelection = NO;
self.tblView.scrollEnabled = NO;
UITextField *searchBarTextField = nil;
for (UIView *subview in self.searchBar.subviews)
{
if ([subview isKindOfClass:[UITextField class]])
{
searchBarTextField = (UITextField *)subview;
break;
}
}
searchBarTextField.enablesReturnKeyAutomatically = NO;
}
はそれを試してみてください:)感謝:)
こんにちは!私はこのコードを使用していましたが、iOS 7にアップデートしたときにコードが機能しなくなりました。その理由を説明しようとしています。誰かに同じ問題がありましたか? – MaikaDalila
あなたはすでにこの回答を見つけています。http://stackoverflow.com/questions/18971988/search-a-uisearchbar-with-no-text-in-xcode5-ios7 – MaikaDalila
@MaikaDalilaのような貴重なの感謝:) – iPatel
キーボードを削除するには1 button
を追加することview
にカスタムview
&を作成します。そのビューを- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar
delegate
メソッドUISearchBar
のときに追加します。 そのボタンをクリックしてキーボードを終了し、button
のために作成したview
も辞退します。また、そのボタンをクリックして検索する場合は、同様に行うことができます。 詳細は画像をご覧ください。
テキストなし
UITextField *searchField = nil;
for (UIView *subview in searchBar.subviews) {
if ([subview isKindOfClass:[UITextField class]]) {
searchField = (UITextField *)subview;
break;
}
}
if (searchField) {
searchField.enablesReturnKeyAutomatically = NO;
}
受け入れ答えとほぼ同じ。そのけどあなたはiOSの7で作業している場合は、ループのために余分に必要になりますと、リターンキーを有効にするために、次のコードを使用します検索バーの一部の変更により
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
{
[self.searchBar setShowsCancelButton:YES animated:YES];
UITextField *searchBarTextField = nil;
for (UIView *mainview in self.searchBar.subviews)
{
for (UIView *subview in mainview.subviews) {
if ([subview isKindOfClass:[UITextField class]])
{
searchBarTextField = (UITextField *)subview;
break;
}
}
}
searchBarTextField.enablesReturnKeyAutomatically = NO;
}
これはios 6と7で使用できます:
- (void)searchBarTextDidBeginEditing:(UISearchBar *)search
{
UITextField *searchBarTextField = nil;
for (UIView *mainview in search.subviews) {
if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) {
if ([mainview isKindOfClass:[UITextField class]]) {
searchBarTextField = (UITextField *)mainview;
break;
}
}
for (UIView *subview in mainview.subviews) {
if ([subview isKindOfClass:[UITextField class]]) {
searchBarTextField = (UITextField *)subview;
break;
}
}
}
searchBarTextField.enablesReturnKeyAutomatically = NO;
}
さらに洗練されたソリューションをお探しの場合は、次のように再帰を使用して検索バー内のテキストフィールドを見つけることができます。これは、リンゴによる廃止を除いて、ios 6,7、または他の将来のiosで動作するはずです。
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar {
UITextField* textField = [self findTextFieldInView:searchBar];
if (textField) {
textField.enablesReturnKeyAutomatically = NO;
}
}
-(UITextField*)findTextFieldInView:(UIView*)view {
if ([view isKindOfClass:[UITextField class]]) {
return (UITextField*)view;
}
for (UIView* subview in view.subviews) {
UITextField* textField = [self findTextFieldInView:subview];
if (textField) {
return textField;
}
}
return nil;
}
が実際にあなただけ設定することができますここでのiOS 7+
私は試して、うまくいきませんでした... – rsc
奇妙にそれは動作します... UIビルダーのフラグをオフにしても機能しませんが、これを追加viewDidLoadの行:とトリックしました。マジック。 –
でテストsearchBar.enablesReturnKeyAutomatically = NO;
はスウィフトを使用してソリューションです。 viewDidLoad関数に貼り付け、コード内にsearchBarのIBOutletがあることを確認してください。(以下私の例には、inputSearchBar変数IBOutletある)
// making the search button available when the search text is empty
var searchBarTextField : UITextField!
for view1 in inputSearchBar.subviews {
for view2 in view1.subviews {
if view2.isKindOfClass(UITextField) {
searchBarTextField = view2 as UITextField
searchBarTextField.enablesReturnKeyAutomatically = false
break
}
}
}
単純スウィフトバージョン:
if let searchTextField:UITextField = searchBar.subviews[0].subviews[2] as? UITextField {
searchTextField.enablesReturnKeyAutomatically = false
}
スイフト3/IOSの10
for view1 in searchBar.subviews {
for view2 in view1.subviews {
if let searchBarTextField = view2 as? UITextField {
searchBarTextField.enablesReturnKeyAutomatically = false
break
}
}
}
searchBar.enablesReturnKeyAutomatically = NO ;
多分リンゴのサイドバグですか? .xibファイルの自動有効化戻り値キーが期待通りに機能しないためです。
ただ、次のコードを追加します。
- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar {
searchBar.enablesReturnKeyAutomatically = NO;
return YES;
}
は、カスタム検索バーを作成します。 AFAIK、ネイティブ検索バーでは不可能です。 – Apurv
あなたはユーザータイプやユーザーが検索ボタンを押すとすぐに検索を絞り込みますか? – CRDave
ソーステーブルの内容が高すぎます。私のように検索すると、それは私のためにパフォーマンスの問題を作成することを意味します。データソースにもたくさんの画像が含まれています。 – Ganapathy