这是一个非常简单的类(子类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) 在我的ios 8键盘扩展中,我想检查用户是否给我的键盘打开访问权限.但我找不到任何API.Swiftkey和其他自定义键盘以某种方式解决了这个问题
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 8允许我们创建自己的自定义键盘.是否可以使自定义键盘输出除未归因的NSStrings之外的任何其他内容?
我可以制作输出图像的键盘来说明消息应用程序,还是不可能?
在iOS 8中,Apple为开发人员提供了创建自定义键盘的能力.在文档中,Apple声明如果要支持iOS当前不支持的语言,则应创建新键盘.因此,如果您能够支持新语言,是否可以创建包含新表情符号字符的键盘?我认为Apple说你可以支持一种新语言,他们会期望有自定义字符.如果可以包含自定义字符,其他设备(即使只有其他运行iOS 8的设备)如何显示新字符?
所以我一直在研究这个自定义键盘一段时间,在 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) 我正在使用“小部件/今日视图”扩展,如果用户在“设置”->“常规”->“可访问性”中禁用了透明效果,我想调整设计。
的确,如果用户禁用了透明性,通知中心的整体外观就会如此不同,以至于我的默认设计很难看。
您知道如何检索此设置以便做出相应的反应吗?
我正在创建一个自定义iOS 8键盘作为宠物项目.
我正在尝试尽可能准确地复制系统键盘,但是从头开始构建它.
我基本上已经完成了这件事.我遇到的最后一个障碍是在键盘上添加自动更正功能.有没有办法让自动更正的行为与常规系统键盘上的相同?
该UILexicon文档是很稀疏.
编辑:
在这方面取得一些进展.UILexicon的requestSupplementaryLexiconWithCompletion:方法似乎只是从我的设备的联系人和键盘快捷方式返回结果.然后我继续看看如何自动更正 NSString并找到UITextChecker类,它已经从iOS 3.2开始提供.
使用这种方法,我可以对单个单词实现自动更正建议,但我仍在研究添加上下文感知自动更正的能力(例如,将"北极猴"更正为"北极猴").
我目前正在构建自定义键盘,我几乎完成了。我遇到的一个问题是删除按钮。当用户点击删除按钮时,它会执行应做的操作并删除上一个文本条目。但是,当用户按下按钮时,什么也不会发生。我如何做到这一点,以便当用户按住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)
谢谢你的帮助。
自定义iOS框架的最小设置和使用情况如何?我开始研究这个,以便与今日扩展共享代码.
这是我到目前为止所做的
看看我的应用程序,我可以看到TesterKit已添加为嵌入式二进制文件和链接框架和库,但它是红色的
然后我尝试使用TestClass.tester()从Framework中调用类方法.但是,我没有显示日志消息,而是...
"使用未解析的标识符"
→我做错了什么?这里有任何错误的假设吗?
注意:我已经观看了WWDC会议416"构建现代框架"并找到了框架程序设计指南.如果有任何示例项目显示如何使用这样的新自定义iOS框架,理想情况下使用Swift +将其与Today Extensions集成,这可能也会有所帮助.