0

我有个问题。我已经实现了一个包含电话号码的 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];

}

但是当我触摸它时,我怎么能对它说,启动方法和拨号呢?

4

2 回答 2

5

点击文本字段永远不会导致某些操作。在我看来,这是糟糕的用户界面设计。为什么不在运行上述代码的字段旁边添加一个按钮?

于 2010-02-11T13:33:17.040 回答
2

我同意 St3fan 的观点,一个普通的 TextField 永远不应该通过点击来引起动作。我暂时假设您有一个特殊的 UITextField 可以使其不可编辑,然后看起来像一个UILabel, 格式化看起来像一个超链接。这样的 UI 可能是正确的。点击一个看似可编辑但实际上拨打电话的文本字段当然是不正确的。

您可以实现UITextFieldDelegate协议并注意textFieldShouldBeginEditing:. 由于此文本字段不可编辑,显然您应该返回 NO。

您可以使用其覆盖视图在文本字段内添加一个“呼叫”按钮(leftViewrightView;阅读这些正确 UE 上的文档)。

您可以子类化为UITextFieldoverride touchesBegan:withEventtouchesEnded:withEvent:touchesCancelled:withEvent:自己处理触摸。请记住:您必须在它们之间收到一个touchesBegantouchesEnded没有一个touchesCancelled才能将其视为触摸。永远不要仅仅基于touchesBegan.

于 2010-02-11T14:29:41.413 回答