【问题标题】:Triggering callback without pressing the button in Cocoa在 Cocoa 中不按按钮触发回调
【发布时间】:2014-05-10 15:00:12
【问题描述】:

我需要能够在this sample 中启动身份验证过程,而无需按下默认提供的按钮。

我要运行的操作是 -(void)buttonPressed 方法,但如果我尝试手动调用它,插件就会崩溃。它是通过按下该按钮自动调用的,但如果能够按 Enter 键就好了。

【问题讨论】:

    标签: objective-c cocoa security-framework sfauthorizationpluginview


    【解决方案1】:

    在您链接的插件源代码中一眼就可以看出这一点!

    虽然它不应该崩溃(在快速查看类代码之后),但您可能在从您的代码发送 buttonPressed: 时没有提供适当的发件人。方法定义为

    - (void)buttonPressed:(SFButtonType)inButtonType
    

    清楚地显示被按下的按钮被指定为发送者。因此,在您的代码中调用buttonPressed: 时,例如:

    ["referenceRToClass" buttonPressed:SFButtonTypeOK];
    

    【讨论】:

    • 重点是,我运行了 [self buttonPressed:SFButtonTypeOK] 并且它已经崩溃了。我一回到我的 Mac 就会提供崩溃报告。
    • 那么只需使用 IBOutlet 传递对按钮的引用。
    • 我不知道如何为这个按钮创建一个出口——它不在 nib 文件中(你可以看看)。相反,它是在插件在系统中处于活动状态时以某种方式生成的。我相信这就是他们创建回调而不是让我们这样做的原因。
    • hm,当动态生成按钮时,您仍然应该能够迭代 UI 元素并根据其类型识别这个按钮......但是,最好发布汽车报告,也许原因是按钮以外的另一个原因......
    • 我发现了问题——插件崩溃不是因为我调用了错误的方法,而是因为我想在从系统读取用户名之前执行代码。现在我已经设置了几毫秒的时间延迟,它工作正常。谢谢,但我还有一个小问题 - 我如何在这个应用程序中检测到输入键?我会尝试创建一个插座,但它不想通过点击拖动来工作。你能看看这个吗?可能这个样本很老了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-16
    • 1970-01-01
    • 1970-01-01
    • 2016-07-11
    • 2018-08-17
    • 2023-03-26
    • 1970-01-01
    相关资源
    最近更新 更多