2012-04-06 9 views
15

私はIPadとIPhoneの両方のためにUIAlertViewをタップで、またはUITextFieldをクリックしようとしています。私はIBActionを作成し、UITextFieldのTap Downイベントでそれをアタッチします。UITextFieldタップイベントを取得するには?

しかし、正しく動作しないのは、iPhoneの場合は、常にないことを意味し、中・ケースのiPad

- (IBAction) TopuchState 
{ 
    //function code 
} 

の作業ではない、私はこれを行うことができますどのように助けてください。

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField 

は、そのメソッドの内部で、あなたが簡単に作成し、あなたの UIAlertViewを表示することができます。

enter image description here

+0

タッチアップ内部でのイベント.editingDidBeginのための特定のテキストフィールドのターゲットを追加しますか?あなたはそれを試しましたか? –

+0

テキストフィールドがスクロールビュー内にある場合は、スクロールビューのinspectプロパティでdelay contentのチェックを外します。そうすればうまくいくはずです。 – Yawar

答えて

21

てみてくださいは、特定のテキストフィールドが編集を開始するときのためにターゲットを追加(UIControlEventEditingDidBegin):

[textField1 addTarget:delegate action:@selector(textField1Active:) forControlEvents:UIControlEventEditingDidBegin]; 
+0

それは私の時間を保存してくれてありがとう。 – BSKANIA

+0

私はテキストフィールドの外でタップすることによってキーボードを却下する方法を尋ねる投稿にとても疲れていました....ありがとう! (私はUIControlEventAllTouchEventsを使用しました) –

2

は、私はあなたがUITextFieldのデリゲートを設定し、メソッドを実装した場合、それが簡単だと思います。

UITextFieldDelegateをご覧ください。

幸運を祈る!

27

あなたはすでに、UITextFieldのデリゲートも、このメソッドを実装するために購読しているとして:

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { 

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Alert" message:@"Alert Message" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Ok", nil]; 
    [alert show]; 

    return YES; 
} 
+0

完璧な答え。 – Sam

+1

私はViewでほぼ8-9のUITextFieldsを持っています。そして、あなたがUITextFieldsのイベントが発生した場合、iPadのコントロールのタグも動作していません。 – Azhar

0

接続TextFieldを代理人と今すぐこの関数を呼び出すと!

-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField {  
    [email protected]" "; 
    return YES; 
} 
0

スウィフト3では

viewDidLoadメソッド

self.textField.addTarget(self, action: #selector(textFieldTouched(_:)), for: UIControlEvents.editingDidBegin) 

func textFieldTouched(textField: UITextField) { 
//Show AlertView 
} 
関連する問題