2012-04-06 1 views
15

Я пытаюсь показать UIAlertView по щелчку или клику UITextField для IPad и IPhone. Я делаю IBAction и присоединяю его к событию Tap Down UITextField.Как получить UITextField Tap Event?

Но ее не работает правильно, значит, не всегда, в случае Iphone и не работает в случае, IPad

- (IBAction) TopuchState 
{ 
    //function code 
} 

пожалуйста, помогите Как я мог это сделать.

enter image description here

+0

Touch Up Inside? Вы пробовали это? –

+0

, если ваше текстовое поле находится внутри scrollview, тогда снимите отметку о задержке содержимого в окне проверки свойства для просмотра прокрутки. Тогда он должен работать. – Yawar

ответ

21

Попробуйте добавить цель, когда конкретный текст поля начинается редактирование (UIControlEventEditingDidBegin):

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

Спасибо, что спасли мое время. – BSKANIA

+0

Я так устал от сообщений, спрашивающих, как убрать клавиатуру, нажав за пределами текстового поля ... спасибо кучу! (Я использовал UIControlEventAllTouchEvents) –

2

Я думаю, что это легче, если вы установить делегат для UITextField и реализации метода:

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField 

затем внутри этого метода вы можете легко создавать и показать свою UIAlertView.

Взгляните на 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

У меня почти 8-9 UITextFields on View и в тегах iPad-управления тоже не работают, если вы согласны с тем, что событие UITextFields получило огонь. – Azhar

0

Connect TextField с делегатом и теперь вызываем эту функцию!

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

В Swift 3

Добавьте цель для конкретного текстового поля для события .editingDidBegin в методе viewDidLoad

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

func textFieldTouched(textField: UITextField) { 
//Show AlertView 
}