Método para telefonema de UITextField
-
20-09-2019 - |
Pergunta
eu tenho um problema. Eu tenho implementado um UITextField que contém um phonenumber, então eu tenho implementado o método a seguir para chamar o número de telefone:
- (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];
}
Mas como posso dizer ao textField quando eu tocar nele, para iniciar o método e discar?
Solução
Eu concordo com St3fan que um TextField normais nunca deve causar uma ação tocando. Vou assumir por um momento que você tem um UITextField especial que pode ser feito não editável e, em seguida, se parece com um UILabel
, formatado para olhar como um hyperlink. UI tal poderia ser correta. Tocar em um campo de texto que parece que é editável, mas, na verdade, faz um telefonema seria, evidentemente, incorreta.
Você poderia implementar o protocolo UITextFieldDelegate
e prestar atenção para textFieldShouldBeginEditing:
. Uma vez que este campo de texto não é editável, obviamente, você deve retornar NO.
Você pode adicionar uma "chamada" botão dentro do campo de texto usando seus pontos de vista de sobreposição (leftView
ou rightView
; leia os documentos na UE correto para estes).
Você poderia subclasse UITextField
para touchesBegan:withEvent
override, touchesEnded:withEvent:
e touchesCancelled:withEvent:
para lidar com o toque sozinho. Lembre-se: você deve receber uma touchesBegan
e touchesEnded
sem touchesCancelled
entre eles, a fim de considerá-lo um toque. Nunca dispare uma ação com base apenas em touchesBegan
.
Outras dicas
Tocar em um campo de texto nunca deve resultar em alguma ação. Na minha opinião que é design de interface de usuário ruim. Por que você não adiciona um botão ao lado do campo que executa o código acima?