2010-02-11 2 views
0

У меня проблема. я осуществил UITextField, который содержит PHONENUMBER, то я реализовал следующий метод для вызова номера телефона:Метод для звонка из 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

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

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

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

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

5

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

Смежные вопросы