小编San*_*aus的帖子

在swift NSObject子类中使用CoreFoundation对象时出现运行时错误

这是一个非常简单的类(子类NSObject),它保存一个CGPath对象列表并将一个附加CGPath到数组上init:

import Foundation
class MyClass: NSObject {

    var list = [CGPath]();

    init() {
        list.append(CGPathCreateMutable());
    }
}
Run Code Online (Sandbox Code Playgroud)

尝试使用此类时:

var instance = MyClass();
println(instance.list.count); // runtime error after adding this line
Run Code Online (Sandbox Code Playgroud)

产生一个丑陋的崩溃:

Playground execution failed: error: Execution was interrupted, reason: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0).
The process has been left at the point where it was interrupted, use "thread return -x" to return to the state before expression evaluation.
* thread #1: tid = 0x1251d1, 0x00000001064ce069 …
Run Code Online (Sandbox Code Playgroud)

arrays nsobject ios swift

6
推荐指数
1
解决办法
2387
查看次数

如何检查我的ios8自定义键盘扩展是否具有开放访问权限?

在我的ios 8键盘扩展中,我想检查用户是否给我的键盘打开访问权限.但我找不到任何API.Swiftkey和其他自定义键盘以某种方式解决了这个问题

ios ios8 ios-app-extension custom-keyboard

6
推荐指数
2
解决办法
1901
查看次数

如何在iOS 10消息扩展中使用CKSubscription?

iOS 10引入了消息扩展,这是第一个(据我所知)扩展,不需要主机应用程序.我正在尝试在没有主机应用程序的邮件扩展中使用CloudKit.

据我所知,CKSubscription依赖于推送通知.但是,我无法UIApplication在应用扩展程序中以通常的方式(通过)注册推送通知:

let app = UIApplication.shared // Error: not available here blah blah blah
Run Code Online (Sandbox Code Playgroud)

这意味着CKSubscription在消息应用程序中似乎无法接收通知.我确实在新的中找到了希望UserNotifications.framework,但它没有提供任何注册远程通知的机制.我试过了:

override func willBecomeActive(with conversation: MSConversation) {

    // ...

    let center = UNUserNotificationCenter.current()
    center.requestAuthorization(options: [.badge, .alert]) { success, error in
        if error != nil { fatalError() }
    }
    center.delegate = self

    // ...
}

// MARK: UNUserNotificationCenterDelegate
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: (UNNotificationPresentationOptions) -> Void) {
    fatalError() // This never gets called :( …
Run Code Online (Sandbox Code Playgroud)

ios swift cloudkit ios10 ios-messages-extension

6
推荐指数
0
解决办法
486
查看次数

iOS 8中的自定义键盘

iOS 8允许我们创建自己的自定义键盘.是否可以使自定义键盘输出除未归因的NSStrings之外的任何其他内容?

我可以制作输出图像的键盘来说明消息应用程序,还是不可能?

ios ios8 ios-app-extension

5
推荐指数
1
解决办法
3851
查看次数

iOS 8中的自定义键盘是否可以使用新角色?

在iOS 8中,Apple为开发人员提供了创建自定义键盘的能力.在文档中,Apple声明如果要支持iOS当前不支持的语言,则应创建新键盘.因此,如果您能够支持新语言,是否可以创建包含新表情符号字符的键盘?我认为Apple说你可以支持一种新语言,他们会期望有自定义字符.如果可以包含自定义字符,其他设备(即使只有其他运行iOS 8的设备)如何显示新字符?

keyboard ios ios8 ios-app-extension

5
推荐指数
1
解决办法
2628
查看次数

当设备在 Beta 3 中旋转时如何正确处理自定义键盘

所以我一直在研究这个自定义键盘一段时间,在 iOS 8 Beta 3 之前一切都很好。

我为 iPhone Portrait、iPhone Landscape、iPad Portrair、iPad Landscape 和 iPhone 4 Portrait 创建了 5 个 xib,问题就在这里。

在我的 KeyboardViewController:UIInputViewController 中,它是在我基于模板创建自定义键盘时创建的。

我有这个私有方法来确定我应该加载哪个 xib,基本上我只是检查屏幕宽度,然后删除所有子视图并添加新的键盘视图。

- (void)viewWillLayoutSubviews
{
    NSLog(@"[DEBUG] viewWillLayoutSubviews");
    [super viewWillLayoutSubviews];
    [self determineKeyboardNib:self.view.frame.size];
}
//
//- (void)viewDidLayoutSubviews
//{
//    NSLog(@"[DEBUG] viewDidLayoutSubviews");
//    [super viewDidLayoutSubviews];
//    [self determineKeyboardNib:self.view.frame.size];
//}

- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
{
    NSLog(@"[DEBUG] viewWillTransitionToSize:withTransitionCoordinator:");
    [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];
    [self determineKeyboardNib:size];
}


/*
 * Determine which xib file to load based on the width of the screen
 */
- (void) determineKeyboardNib: …
Run Code Online (Sandbox Code Playgroud)

keyboard orientation ios ios8 ios-app-extension

5
推荐指数
1
解决办法
1886
查看次数

如何知道用户是否在“设置”-&gt;“辅助功能”中禁用了透明度?

我正在使用“小部件/今日视图”扩展,如果用户在“设置”->“常规”->“可访问性”中禁用了透明效果,我想调整设计。

的确,如果用户禁用了透明性,通知中心的整体外观就会如此不同,以至于我的默认设计很难看。

您知道如何检索此设置以便做出相应的反应吗?

transparency widget ios ios8 ios-app-extension

5
推荐指数
1
解决办法
286
查看次数

在iOS 8键盘扩展中实现自动更正

我正在创建一个自定义iOS 8键盘作为宠物项目.

我正在尝试尽可能准确地复制系统键盘,但是从头开始构建它.

我基本上已经完成了这件事.我遇到的最后一个障碍是在键盘上添加自动更正功能.有没有办法让自动更正的行为与常规系统键盘上的相同?

UILexicon文档是很稀疏.

编辑:

在这方面取得一些进展.UILexicon的requestSupplementaryLexiconWithCompletion:方法似乎只是从我的设备的联系人和键盘快捷方式返回结果.然后我继续看看如何自动更正 NSString并找到UITextChecker类,它已经从iOS 3.2开始提供.

使用这种方法,我可以对单个单词实现自动更正建议,但我仍在研究添加上下文感知自动更正的能力(例如,将"北极猴"更正为"北极猴").

keyboard ios ios8 ios-app-extension uilexicon

5
推荐指数
1
解决办法
3215
查看次数

iOS 8自定义键盘按住按钮删除吗?

我目前正在构建自定义键盘,我几乎完成了。我遇到的一个问题是删除按钮。当用户点击删除按钮时,它会执行应做的操作并删除上一个文本条目。但是,当用户按下按钮时,什么也不会发生。我如何做到这一点,以便当用户按住Delete键时,键盘会像标准ios键盘一样连续删除?这是我当前的代码:

实用标记键盘

- (void)addGesturesToKeyboard{
[self.keyboard.deleteKey addTarget:self action:@selector(pressDeleteKey)forControlEvents:UIControlEventTouchUpInside];
Run Code Online (Sandbox Code Playgroud)

和:

-(void)pressDeleteKey{
[self.textDocumentProxy deleteBackward];
}
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助。

keyboard ios ios8 ios-app-extension custom-keyboard

5
推荐指数
2
解决办法
2624
查看次数

如何创建和使用iOS Framework与Extensions共享代码

自定义iOS框架的最小设置和使用情况如何?我开始研究这个,以便与今日扩展共享代码.

这是我到目前为止所做的

  1. 添加了一个新的Target选择Cocoa Touch Framework模板并将其命名为TesterKit
  2. 在框架内部,我创建了一个新类TestClass.swift
  3. TestClass.swift里面我创建了一个简单的类方法类基金测试器()打印一个字符串进行测试

看看我的应用程序,我可以看到TesterKit已添加为嵌入式二进制文件链接框架和库,但它是红色的

  1. 为了在应用程序中使用这个新框架,我将导入TesterKit添加到AppDelegate的顶部
  2. 然后我尝试使用TestClass.tester()从Framework中调用类方法.但是,我没有显示日志消息,而是...

    "使用未解析的标识符"

→我做错了什么?这里有任何错误的假设吗?

注意:我已经观看了WWDC会议416"构建现代框架"并找到了框架程序设计指南.如果有任何示例项目显示如何使用这样的新自定义iOS框架,理想情况下使用Swift +将其与Today Extensions集成,这可能也会有所帮助.

xcode ios swift ios8 ios-app-extension

5
推荐指数
1
解决办法
2494
查看次数