0

我正在使用 Xcode 6.0 和 swift。UIAlertView 和 UIAlertController(例如:以下 2 个函数)在继承自 UIViewController 的 myViewController 上工作正常,但它们在继承自 UIInputViewController 的 KeyboardViewController 上崩溃。Apple 不允许在自定义键盘上使用 alertview 还是我的编码有任何错误?欢迎和赞赏任何回应。

func viewAlert() {
    var alertView = UIAlertView() <———
    alertView.addButtonWithTitle("Ok")
    alertView.title = "title"
    alertView.message = "message"
    alertView.show()
}    
func viewAlert0() {
    var alert = UIAlertController() <———
    alert.title = "title"
    alert.message = "are disabled in your device"
    alert.addAction(UIAlertAction(title: "Click", style: UIAlertActionStyle.Default, handler: nil))
    self.presentViewController(alert, animated: true, completion: nil)
}
 <——— debugger error point:

0x325ca19:  calll  0x327e620                 ; symbol stub for: pthread_kill
0x325ca1e:  movl   $0x2710, (%esp)
0x325ca25:  calll  0x327ec50                 ; symbol stub for: usleep$NOCANCEL
0x325ca2a:  movl   $0xffffffe7, -0xc(%ebp)
0x325ca31:  movl   %esi, 0x4(%esp)
0x325ca35:  movl   $0x0, 0x8(%esp)
0x325ca3d:  movl   $0x3, (%esp)
0x325ca44:  calll  0x327e476                 ; symbol stub for: sigprocmask
0x325ca49:  ud2    <====== Thread 1 :EXC_BAD_INSTRUCTION(code=EXC_i386_INVOP,subcode=0x0)
4

2 回答 2

0

从 iOS 8 开始,我们有了新的宏:

NS_EXTENSION_UNAVAILABLE_IOS

iOS 不允许在EXTENSION

iOS 不允许使用AlertView,或者AlertController如果您正在构建CUSTOM KEYBOARD EXTENSION

看更多:

于 2014-09-30T08:23:53.570 回答
0

希望它可以帮助 Swift 中的某个人:

假设您有一个必须与 iOS 和扩展一起使用的库(在可能的情况下,我使用扩展不可用的 UIApplication.sharedApplication().keyWindow)

#if NS_EXTENSION_UNAVAILABLE_IOS


func captureScreen() -> UIImage {

    let window = UIApplication.sharedApplication().keyWindow
    let scale = UIScreen.mainScreen().scale

    UIGraphicsBeginImageContextWithOptions(window!.bounds.size, false, scale)

    window?.layer.renderInContext(UIGraphicsGetCurrentContext()!)
    let image : UIImage = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()

    return image
}


#else
#endif

使用#ifdef 允许我们为iOS 和扩展编译这个文件。

于 2015-12-27T13:46:09.043 回答