1

私はObjective Cが初めてで、tableViewに検索バーがあります。searchBar テキスト フィールドへの入力を制限する必要はありません。たとえば、20 個を超える記号を入力する必要はありません。どうすればこれらを行うことができますか?

-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText

私は次のように書いてみます

searchBar.text.lenght == 20;

しかし、それは役に立たない

どうすればこれらを行うことができますか? または、長さが 20 を超えるとキーボードをオフにする方が簡単かもしれません。ありがとうございました。

4

3 に答える 3

10

あなたが使用することができますshouldChangeCharactersInRange:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
   return ([textField.text length] + [string length] - range.length > 20) ? NO : YES;
}

編集: 申し訳ありません。UISearchBar の場合は、使用する必要があります

- (BOOL)searchBar:(UISearchBar *)searchBar shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
   return ([searchBar.text length] + [text length] - range.length > 20) ? NO : YES;
}

編集: 以下のコメントを参照してください

- (BOOL)searchBar:(UISearchBar *)searchBar shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
   return ([searchBar.text length] + [text length] - range.length <= 20);
}
于 2013-09-25T16:32:27.197 に答える
2

あなたはObjective-Cが初めてなので、他の答えを拡張します

1.View Controller 内に UISearchBarDelegate プロトコルを実装する必要があります。

@interface ViewController : UIViewController <UISearchBarDelegate>

2.代理人を割り当てる必要があります

searchBar.delegate = self

3. 他の投稿で指定されているデリゲート コールバックを実装する

20 文字を超える場合にキーボードを非表示にする場合は、同じデリゲート関数で呼び出して行うことができます。

[searchBar resignFirstResponder];
于 2013-09-25T16:42:43.863 に答える