23

I am trying to show UIAlertView on Tap or Click of UITextField for both IPad and IPhone. I make an IBAction and Attach it with Tap Down event of UITextField.

But its not working correctly, means not always, in case of iphone and not working in-case of iPad

- (IBAction) TopuchState
{
    //function code
}

please help How could I do this.

enter image description here

Azhar
  • 20,500
  • 38
  • 146
  • 211

5 Answers5

29

As you are already subscribed to be UITextField delegate, implement this method:

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

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

    return YES;
}
Lucien
  • 8,263
  • 4
  • 30
  • 30
  • 1
    I have almost 8-9 UITextFields on View and in iPad control's tags are also not working if you match which UITextFields's event got fire. – Azhar Apr 06 '12 at 17:27
27

Try adding a target for when a particular text field begins editing (UIControlEventEditingDidBegin):

 [textField1 addTarget:delegate action:@selector(textField1Active:) forControlEvents:UIControlEventEditingDidBegin];
J Max
  • 2,371
  • 2
  • 25
  • 42
  • I was so tired of posts asking how to dismiss the keyboard by tapping outside the textfield....thanks a bunch! (I used UIControlEventAllTouchEvents) – Julius Jul 12 '17 at 20:22
4

I think it's easier if you set the delegate for the UITextField and implement the method:

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField

then inside that method you can easily create and show your UIAlertView.

Take a look at UITextFieldDelegate.

Good luck!

Zalykr
  • 1,524
  • 1
  • 10
  • 20
4

In Swift 3

Add a target for a particular text field for the event .editingDidBegin in viewDidLoad method

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

func textFieldTouched(textField: UITextField) {
//Show AlertView
}
jaiswal Rajan
  • 4,641
  • 1
  • 27
  • 16
1

Connect TextField with delegate and Now calling this function!!

-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField {       
   textView.text=@"   ";
   return YES;
}