2010-12-03 12 views
0

私のビューでは、私は3つのUITextFieldを持っています。それらのそれぞれに対して、appleで説明されているように、アクセサリービューを作成しました。ResignFirstResponderからKeyboard AccessoryViewボタン

私のaccessoryViewには、「CloseKeyboard」という関数を呼び出すボタンが追加されています。この関数では、キーボードが書いているUITextFieldを傍受し、ResignFristResponderを呼び出す必要がある方法を見つけることができません。私はアクティブUITextFieldですからresignFirstResponderできるようにするには、「CloseKeyboard」機能を実装するにはどうすればよい

-(UIView *)createInputAccessoryView { 

    CGRect accessFrame = CGRectMake(0.0, 0.0, 20.0, 55.0); 

    UIView *inputAccessoryView = [[UIView alloc] initWithFrame:accessFrame]; 

    UIButton *compButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 

    compButton.frame = CGRectMake(250.0, 10.0, 60.0, 40.0); 

    [compButton setTitle: @"Close" forState:UIControlStateNormal]; 

    [compButton addTarget:self action:@selector(CloseKeyboard:) 

         forControlEvents:UIControlEventTouchUpInside]; 

    [inputAccessoryView addSubview:compButton]; 

return inputAccessoryView; } 

:私は

if (field1.inputAccessoryView == nil) { 
    field1.inputAccessoryView = [self createInputAccessoryView]; 
} 
if (field2.inputAccessoryView == nil) { 
    field2.inputAccessoryView = [self createInputAccessoryView]; 
} 
if (field3.inputAccessoryView == nil) { 
    field3.inputAccessoryView = [self createInputAccessoryView]; 
} 

そして、ここcreateInputAccessory機能そのコードを書いた一つのフィールドにaccessoryViewを追加するには

ありがとうございました!

答えて

1

以降、現在アクティブなコントロールを追跡することなく、キーボードを却下する簡単な方法がありますか、使用可能なすべてのコントロールを反復するか、UITextFieldDelegateを使用します。

endEditing:ドキュメントから

[self.view endEditing:YES] 

は、ビュー(またはその埋め込まれたテキストフィールドの1)を引き起こす にファーストレスポンダステータスを辞任。

- (BOOL)endEditing :(BOOL

パラメータ

かかわらず、それはそう をしたいかどうかの、辞任するファーストレスポンダを強制的にYESを指定します。それがなかった場合は戻り値
YES

は、ビューはファーストレスポンダの状態やNOを辞任した場合。

ディスカッション
このメソッドは、現在のビューと現在ファーストレスポンダであるテキストフィールドのそのサブビュー 階層に見えます。 が見つかった場合は、そのテキストフィールドに最初のレスポンダとして辞退するかどうかを尋ねます。 forceパラメータがYESに設定されている場合、テキストフィールドに入力することはありません。 それは強制的に辞任されます。

0

私は最初の解決策としてこの実装を試しています。フィールド1がfirstResponderになるたびに強制的に辞退します。

-(void) closeFunction:(id)sender{ 
    [field1 becomeFirstResponder]; 
    [field1 resignFirstResponder]; 
} 

しかし、これは周りの仕事...ではないソリューションです:iOSの2.0の時点ではP