NSSelector崩溃我的键盘应用程序没有任何错误

时间:2014-10-11 12:06:02

标签: swift ios8 xcode6

我使用代码在创建按钮时为其分配操作。 以下代码没有任何问题:

button.addTarget(self, action: didTapDot, forControlEvents: .TouchUpInside)

按钮是按钮对象,didTapDot是同一类中函数的名称,触摸按钮时该函数被激活,因此点符号可以写在屏幕上。

现在,我正在尝试制作一个通用代码,以后可以在单行代码中生成所有按钮,这些按钮的运行方式非常相似。我创建了一个名为didTap(content)的函数。现在和以前一样,我想将特定的didTapDot替换为didTap(内容)。

let tapAction = "didTap("+content+")"
let tapActionSelector = NSSelectorFromString(tapAction)
button.addTarget(self, action: tapActionSelector, forControlEvents: .TouchUpInside)

我在最长的和安全的#34;避免问题的方法。 "行动:"需要一个NSSelector,所以为了使它我首先创建了一个我想要发送的函数的String,然后我把它变成了NSSelector。

现在,Xcode仍显示0错误和0警告。我运行模拟器。键盘成功显示出来。我点击其中一个创建的按钮 - 崩溃。我不知道这里做错了什么:(

记录,这是崩溃后控制台给我的错误:

  

2014-10-11 14:42:43.315 AppName [7634:561153]插件gilad.AppName.Extension    2014-10-11 14:42:44.414 AppName [7634:561075]   viewServiceDidTerminateWithError ::错误   Domain = _UIViewServiceInterfaceErrorDomain Code = 3"操作   无法完成。 (_UIViewServiceInterfaceErrorDomain错误3。)"   UserInfo = 0x7f900ad206b0 {Message = Service Connection Interrupted}

那么,任何想法可能会出错?

1 个答案:

答案 0 :(得分:1)

我认为这有帮助。我找到了你的问题,因为当我的键盘终止时我得到同样的错误,但我认为是无关的。无论如何,我有同样的任务。这是我的解决方案:

    //didTap function
    func didTap(sender:UIButton){
        var proxy = textDocumentProxy as UITextDocumentProxy
        proxy.insertText(sender.titleForState(.Normal)!)
    }

    //how to use when you set up your keyboard
    button.setTitle(key.label,forState: .Normal)
    button.addTarget(self, action: "didTap:", forControlEvents: .TouchUpInside)

请注意addTarget中函数名称末尾的“:”。它告诉底层框架有一个预期的参数(发送者)。

希望它有所帮助。