Способ телефонного звонка из UITextField - PullRequest
0 голосов
/ 11 февраля 2010

У меня проблема. Я реализовал UITextField, который содержит номер телефона, затем я реализовал следующий метод для вызова номера телефона:

- (void)rufeAn{
NSString *prefix = (@"tel://");
UIApplication *app = [UIApplication sharedApplication];
NSString *dialThis = [NSString stringWithFormat:@"%@%@", prefix, map.kordinate.telefon];
NSURL *url = [NSURL URLWithString:dialThis];
[app openURL:url];

}

Но как я могу сказать textField, когда я касаюсь его, чтобы запустить метод и набрать номер?

Ответы [ 2 ]

5 голосов
/ 11 февраля 2010

Касание текстового поля никогда не должно приводить к каким-либо действиям. На мой взгляд, это плохой дизайн пользовательского интерфейса. Почему бы вам не добавить кнопку рядом с полем, в котором запущен вышеуказанный код?

2 голосов
/ 11 февраля 2010

Я согласен со St3fan, что обычное TextField никогда не должно вызывать действие при нажатии. На данный момент я предполагаю, что у вас есть специальный UITextField, который можно сделать недоступным для редактирования и затем выглядит как UILabel, отформатированный так, чтобы он выглядел как гиперссылка. Такой интерфейс может быть правильным. Нажатие на текстовое поле, которое выглядит как редактируемое, но на самом деле делает телефонный звонок, было бы, конечно, неправильно.

Вы можете реализовать протокол UITextFieldDelegate и наблюдать за textFieldShouldBeginEditing:. Поскольку это текстовое поле недоступно для редактирования, очевидно, вы должны вернуть NO.

Вы можете добавить кнопку «вызов» внутри текстового поля, используя его наложения (leftView или rightView; для этого прочитайте документы в правильном UE).

Вы можете создать подкласс UITextField, чтобы переопределить touchesBegan:withEvent, touchesEnded:withEvent: и touchesCancelled:withEvent:, чтобы обрабатывать касание самостоятельно. Помните: вы должны получить touchesBegan и touchesEnded без touchesCancelled между ними, чтобы считать это касанием. Никогда не запускайте действие, основанное только на touchesBegan.

...