18

Вопрос по ipad, ios, objective-c, iphone – Как получить событие UITextField Tap?

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

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

- (IBAction) TopuchState
{
    //function code
}

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

enter image description here

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

    от
  • Спасибо, это сэкономило мое время.

    от
  • У меня почти 8-9 UITextFields при просмотре, и в iPad теги элемента управления также не работают, если вы соответствуете тому, какое событие UITextFields произошло.

    от Azhar
  • Идеальный ответ.

    от
  • если ваше текстовое поле находится внутри scrollview, снимите флажок с задержкой касания содержимого в свойстве inspect для просмотра с прокруткой. Это должно работать тогда.

    от Yawar
  • Подправить внутри? Вы пробовали это?

    от Adrian Ancuta
5 ответов
  • 28

    Поскольку вы уже подписаны на делегирование 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;
    }
    

  • 23

    Попробуйте добавить цель

    когда конкретное текстовое поле начинает редактировать (UIControlEventEditingDidBegin):

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

  • 1

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

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

  • 2

    Я думаю, что легче, если вы назначите делегата для

    UITextField и реализовать метод:

    - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
    

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

    Взгляни наUITextFieldDelegate.

    Удачи!

  • 3

    In Swift 3

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

    self.textField.addTarget(self, action: #selector(textFieldTouched(_:)), for: UIControlEvents.editingDidBegin)
    
    func textFieldTouched(textField: UITextField) {
    //Show AlertView
    }