2012-01-10 11 views
0

私はキーボードを使用していますし、「完了」が押されたとき、私はちょうどキーボードを非表示にするには、このメソッドを実装しました:ここNSInvalidArgumentException - touchBackgroundLogin

-(IBAction) finEdition: (id)sender{ 
    [sender resignFirstResponder]; 
} 

は、スタックトレースです:

2012-01-10 11:44:33.949 emars[27985:b303] -[ThirdViewController touchBackgroundLogin:]: unrecognized selector sent to instance 0x682fa00 
2012-01-10 11:44:33.990 emars[27985:b303] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[ThirdViewController touchBackgroundLogin:]: unrecognized selector sent to instance 0x682fa00' 
*** Call stack at first throw: 
(
    0 CoreFoundation      0x00fb55a9 __exceptionPreprocess + 185 
    1 libobjc.A.dylib      0x01109313 objc_exception_throw + 44 
    2 CoreFoundation      0x00fb70bb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187 
    3 CoreFoundation      0x00f26966 ___forwarding___ + 966 
    4 CoreFoundation      0x00f26522 _CF_forwarding_prep_0 + 50 
    5 UIKit        0x002c64fd -[UIApplication sendAction:to:from:forEvent:] + 119 
    6 UIKit        0x00356799 -[UIControl sendAction:to:forEvent:] + 67 
    7 UIKit        0x00358c2b -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 527 
    8 UIKit        0x00357a1c -[UIControl touchesBegan:withEvent:] + 277 
    9 UIKit        0x002ead41 -[UIWindow _sendTouchesForEvent:] + 395 
    10 UIKit        0x002cbc37 -[UIApplication sendEvent:] + 447 
    11 UIKit        0x002d0f2e _UIApplicationHandleEvent + 7576 
    12 GraphicsServices     0x01891992 PurpleEventCallback + 1550 
    13 CoreFoundation      0x00f96944 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52 
    14 CoreFoundation      0x00ef6cf7 __CFRunLoopDoSource1 + 215 
    15 CoreFoundation      0x00ef3f83 __CFRunLoopRun + 979 
+0

このようにしてください - (IBAction)finEdition:(id)送信者{ UITextFeild * textfeild =(UITextFeild *)送信者[textfeild resignFirstResponder]; } – ajay

+0

@ajay:ありがとう、ありがとう。私は対処する2つのテキストフィールドを持っている、私はすべてのテキストフィールドの2行を置く??? – clement

答えて

2

- (IBAction)finEdition:(id)送信者は、テキストフィールド[送信者resignFirstResponder]のボタンではなく、送信者はButton/ViewControllerのIDで、最初のレスポンダーを辞任しようとしますので、アプリケーションがクラッシュするようにします。

//ここでは、[theTextField resignFirstResponder]を使用できるように、これはUITextFieldのデリゲートメソッドです。

- (BOOL)textFieldShouldReturn:(UITextField *)theTextField { 
    [theTextField resignFirstResponder]; 
    return YES; 
} 

あなたが選択した時点でキーボードを却下するのはあなたのアプリケーションです。ユーザーインターフェイスの特定のボタンをタップするなど、特定のユーザー操作に応じてキーボードを閉じることがあります。ユーザーがキーボードの「return」キーを押したときに、キーボードを閉じるようにテキストフィールドデリゲートを構成することもできます。キーボードを閉じるには、resignFirstResponderメッセージを最初の応答者であるテキストフィールドに送信します。これを行うと、テキストフィールドオブジェクトは(デリゲートオブジェクトの同意を得て)現在の編集セッションを終了し、キーボードを非表示にします。

だから、何とかresignFirstResponderを送信する必要があります。しかし、textFieldShouldReturn:メッセージの処理中にtextfieldが別の方法でフォーカスを失う可能性があります。これにより、キーボードが消えます。
はあなたが.Mでテキストフィールドを初期化した後、UITextFieldのデリゲートであるためにあなたのビュー/のViewControllerを設定していることを確認します:

yourTextField.delegate =自己;

+0

おかげさまで、キーボードを持っています。私はDoneを押して、キーボードを隠しておくだけです。キーボードはUITextFieldを編集するだけでなく、2つのUITextFieldを編集します。 – clement

+0

完了ボタンアクション自体では、[self.textfield resignFirstResponder]を指定する必要があります。すべてのテキストフィールド(1,2,3 .... n)に対してはうまく動作します。 –

+0

@Balakrishan:ありがとう、そう[fieldOne resignFirstResponder]; [fielsTwo resignFirstResponder]; YESを返します。働くでしょう? – clement

関連する問題