【问题标题】:How to make a call with button in iOS如何在 iOS 中使用按钮拨打电话
【发布时间】:2017-08-23 19:12:15
【问题描述】:

这是我第一次尝试创建应用程序。并使用 Xcode。

这个问题之前没有得到回答的原因是因为从我目前所处的角度来看,我的问题没有答案,即我已经按照这个 URL 上的说明创建了一个应用程序:

http://www.wikihow.com/Make-an-iPhone-App

我已经进入第 3 部分(共 5 部分):创建应用程序,第 6 部分 - 此后我的问题没有得到解答 - 这是如何让我的按钮在点击时拨打电话。

因此,我现在在 Xcode 中(请记住,我遵循了链接页面上的那些说明)我在屏幕上有一个按钮,但我能找到的所有说明并没有完全解决我需要做的事情使该按钮拨打电话。

一些示例显示如下代码:Making a Button Call a Phone Number in iOS

但没有告诉我如何处理该代码,我对所有这些都是新手,所以从这一点找出确切的步骤充其量是残酷的。此外,我尝试将所有代码粘贴到其中包含代码的工作表中(通过单击),代码显示错误 - 我从网上获得的所有代码。

有什么帮助吗?


附:在这个页面上,一个海报说实际上有一个与拨打电话相关的按钮,但我又一次,不知道在哪里可以找到这个......

http://www.insanelymac.com/forum/topic/126918-initiating-a-call-on-iphone/

【问题讨论】:

  • 我无法编辑代码!
  • 所以我在主帖中的第一个链接 - 如果我一直按照步骤制作按钮,并在 h 和 m 中添加了喜欢的代码,并且拥有最新版本的 Xcode,怎么办我按下按钮拨打电话?

标签: ios xcode button phone-call


【解决方案1】:

与您的视图控制器实现并排打开您的 xib/storyboard,按住 Control 并将您的按钮(界面构建器)拖到您的实现中。 Xcode 应该会自动为您生成一个 IBAction。

在您的代码上,调用:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel:911"]];

【讨论】:

  • 谢谢你,布鲁诺!为此,我不知道如何使 xib/storyboard 并排并与上面相同 - 当我将蓝线拖到任何地方时,它只是弹回并且没有任何反应。
  • @njames 要并排获取故事板和代码,请按“编辑器”上方工具栏中的燕尾服按钮。它应该会自动为您打开另一侧的 AppDelegate.h
  • @njames xib/storyboard 中的视图控制器必须与代码中的视图控制器具有相同的类名。见:cdn2.pqp.vc/vc_cfg.png
【解决方案2】:

基本上,您需要将找到的代码添加到 appdelegate.m 文件中的“方法”中。这个“方法”是一段代码,只要被告知就执行。

所以在 appdelegate.m 中,添加@end 上面的行

- (IBAction)makeCall:(id)sender {

}

现在粘贴您在两个大括号之间找到的代码行。现在,每当调用“makeCall”时,您找到的那行代码将被执行,这将拨打电话(希望如此)

下一步是让按钮告诉“makeCall”方法运行。为此,您需要“声明” makeCall 方法,这相当于在 eBay 上出售商品:在上一步中您制作了商品(方法),现在您想向世界展示它是可用的。

Appdelegate.h 在这种情况下相当于 eBay/Craigslist/gumtree:在@end 上方的任意位置添加这行代码:

-(IBAction)makeCall:(id)sender;

现在最后一步是将您的按钮链接到此,这是最简单的部分。返回您的界面构建器并单击您的按钮。右键单击该按钮并将一条线拖到左侧名为“AppDelegate”的蓝色框(这是您之前添加代码的文件,记得吗?),然后从弹出的小列表中选择 makeCall。您已成功将按钮链接到您的方法,所以现在当您单击按钮时,您应该可以拨打电话了!

如果您想了解更多关于您刚刚添加的代码的细节,IBAction 是方法的类型,它意味着可以在界面构建器中链接按钮的方法。 (id)sender 部分意味着无论何时调用该方法,都会传递调用该​​方法的对象/按钮,因此该方法可以看到谁为它“发送”。

编辑:好的,因为您使用的是故事板,我们需要创建所谓的“视图控制器”。这基本上代表和控制(因此得名)手机屏幕上的任何内容。

因此,通过转到 file -> new -> cocoa 类来创建一个新类,并在字段中将其称为 ViewController 并使其成为 UIViewController 的子类。

现在我们需要将添加到 appdelegate.h 和 appdelegate.m 的所有代码复制到 viewcontroller.h 和 viewcontroller.m 中,同时将添加到 appdelegate.h 的代码复制到同一个位置在 viewcontroller.h 等中

它们应该看起来像这样:

ViewController.h:

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

-(IBAction)makeCall:(id)sender;

@end

ViewController.m:

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (IBAction)makeCall:(id)sender {

}

@end

使用 makeCall 具有您之前粘贴的代码行。

现在回到界面生成器,点击屏幕上方立方体内的黄色小方块,然后点击右侧的报纸图标:

在 ViewController 的类字段中输入(它应该会自动为您完成),然后转到箭头图标选项卡(称为绑定):

单击并将拨打电话旁边的小圆圈拖到您的按钮上,然后选择出现的“触地”选项之一。这些只是意味着何时调用该方法,即用户按下按钮或将手指从按钮上移开时。他们现在应该被链接。试一试,告诉我它是如何工作的。

【讨论】:

  • 谢谢你,卢克 - 我已经走了很远,但被困在最后一步 - 我无法进行任何拖动 - 当我 Ctrl 单击并将线拖动到 h 时,蓝线确实出现了或 m 文件 - 但你不告诉我将它拖到哪个文件。当我将它拖到它们中的任何一个到那些代码部分时 - 蓝线刚刚回弹 - 没有任何反应。哦,我感觉如此接近!
  • 不要将该行拖到文件中,在上面布鲁诺的回答中有一个截图;你看到文件和界面生成器之间的小方块了吗?如果您将鼠标悬停在其中一个蓝色立方体上,其中一个会显示 AppDelegate。您需要将按钮链接到此多维数据集。你真的很亲密,这是最后一步
  • 我没有任何蓝色立方体卢克,我也没有文件和界面构建器之间的那个部分 - 它可能是我的版本 - 我压力很大。我只有文件、界面构建器和代码——我正在尝试查看选项,但我找不到任何可以显示该列的内容,其中包含多维数据集。当我单击按钮(或不单击按钮)时,我的界面下方确实有一个带有正方形的圆形黄色圆圈,一个红色立方体和一个绿色退出按钮,当我单击视图控制器时,我从这里迷路了。我希望每个人都能看到我的屏幕——你们可能都会在一秒钟内看到它……
  • 好的,伙计们,这是我的观点,我想我已经按照所有说明进行操作了——你会看到界面中间有一个按钮,而且看起来是基于你的说,如果我在上面提到的 Luke 这样的正确文件中有代码(我这样做了),现在应该真的很容易……但事实并非如此,这有点令人抓狂……但我确实感谢你们的帮助 - 这太棒了。好的,这里是s1383.photobucket.com/user/345ad/media/…
  • 啊,您使用的是 Xcode 5 引入的新的“故事板”。我以前没有使用过它,但我认为您仍然应该通过将一条线从您的按钮拖到屏幕下方圆圈内的黄色方块来链接它。我现在要亲自尝试一下,我会向你汇报
猜你喜欢
  • 2018-03-13
  • 1970-01-01
  • 2010-10-14
  • 2011-07-21
  • 2016-05-07
  • 2017-02-02
  • 1970-01-01
  • 2017-08-12
  • 1970-01-01
相关资源
最近更新 更多