2012-04-06 10 views
15

Próbuję pokazać UIAlertView na Tap lub Click z UITextField dla iPada i IPhone. Tworzę IBAction i dołączam go do Tap Down z UITextField.Jak zdobyć UITextField Tap Event?

Ale jej nie działa prawidłowo, to nie zawsze, w przypadku iPhone i nie pracuje już w przypadku iPada

- (IBAction) TopuchState 
{ 
    //function code 
} 

pomóż Jak mogłem to zrobić.

enter image description here

+0

dotykowy wewnątrz? Czy próbowałeś tego? –

+0

, jeśli pole tekstowe znajduje się wewnątrz przewijania, odznacz opcję opóźnienia dotknięcia zawartości w oknie właściwości sprawdzania dla widoku przewijania. Powinno wtedy działać. – Yawar

Odpowiedz

21

Spróbuj dodać docelową gdy dana pole tekstowe rozpoczyna edycję (UIControlEventEditingDidBegin):

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

Dzięki temu zaoszczędziłem czas. – BSKANIA

+0

Byłem tak zmęczony postami, pytając, jak odrzucić klawiaturę, stukając poza polem tekstowym .... dzięki! (Użyłem UIControlEventAllTouchEvents) –

2

myślę, że to łatwiejsze, jeśli ustawić delegata dla UITextField i wdrożenie metody:

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField 

następnie wewnątrz tej metody można łatwo tworzyć i pokazać swoje UIAlertView.

Spójrz na UITextFieldDelegate.

Powodzenia!

27

Jak jesteś już subskrybentem być UITextField delegat, wdrożyć tę metodę:

- (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

Doskonała odpowiedź. – Sam

+1

Mam prawie 8-9 UITextFields w widoku, a w tagach kontrolek iPada również nie działają, jeśli dopasujesz, które wydarzenie UITextFields zostało uruchomione. – Azhar

0

Połącz TextField z delegatem i teraz nazywając tę ​​funkcję !!

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

w Swift 3

Dodaj cel dla danego pola tekstowego na razie .editingDidBegin w metodzie viewDidLoad

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

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