我正在尝试为iOS8编写自定义键盘,到目前为止,减去奇怪的打嗝,我没有太多问题.但是,当我创建一个视图并将其添加为UIButton我已添加到键盘视图的子视图时,新添加的视图将被剪切在键盘视图的顶部.据我所知,层次结构如下:
UIView(弹出) - > UIButton(实际"键") - >UIInputView
使用此层次结构,顶层UIView被剪切在内部UIInputView.每个UIView都clipsToBounds设置为false,我也将UIView(self.view)设置false为UIInputViewController,但似乎没有帮助.
可能这是目前对扩展系统的限制,但希望这是我正在做的傻事!
有没有办法在iOS 8自定义键盘扩展中替换预测文本的来源并在预测文本栏中显示?预测文本栏的类是什么?
非常感谢.我已经阅读了文档,但找不到答案.请帮忙.
Apple在2014年WWDC中引入了"Widgets"的概念.Widgets用于快速访问具有急需信息的应用程序.我试图将Widgets添加到我的应用程序中.当我们在应用程序中只有一个Target时很容易.
但是,如果我们有多个目标,似乎我们需要为每个目标添加单独的Widget.是否可以添加一个Widget并使其与所有目标共享?
提前致谢.
我正在开发一个应用扩展程序Action.
主机应用程序将以正常方式使用我的扩展程序:通过显示UIActivityViewController包含一个数组,activityItems然后将其传递给我的扩展程序.
iOS将根据项目是否与NSExtensionActivationRule我info.plist在扩展中定义的设置相匹配来决定是否显示我的操作.
此功能似乎适用于内容和指向内容(图像,视频,文本,文件,URL)的指针.
相反,我需要传递结构化数据并接收结构化数据.
我可以itemType使用激活规则将我的文本定义为文本NSExtensionActivationSupportsText,然后只传递序列化的JSON.但是,我的行动将提供简单的纯文本.不好.
显然有一些神秘的查询语言可用于NSPredicate在我的NSExtensionActivationRule设置中定义,允许某种自定义.
但我无法弄明白.所有示例都基于内容,而不是数据.如何将自定义定义actionItem为结构化数据,让iOS知道我的操作何时真正合适?
我能完成我想要的吗?怎么样?任何提示都表示赞赏.
更新:我怀疑这个问题的关键是自定义统一类型标识符.但是,我仍然感到困惑,因为UTI定义的所有示例仍然是内容(文件和媒体),而不是结构化数据.
我已经阅读了文档,似乎无法找到任何方法如何在设置>常规>键盘中检测自定义键盘?
有谁知道吗?
我使用自己的ios应用程序实现了文档提供程序应用程序扩展功能.问题是应用扩展程序无法访问包含应用程序图像/资产或包含应用程序资源数据.有谁知道如何实现它?
我有一个DataManager类,它返回一个共享实例:
+ (DataManager *)sharedInstance;
{
static DataManager *sharedInstance = nil;
static dispatch_once_t pred;
dispatch_once(&pred, ^{
sharedInstance = [[DataManager alloc] init];
});
return sharedInstance;
}
Run Code Online (Sandbox Code Playgroud)
在这里,我跟踪我的managedObjectContext,managedObjectModel,persistentStoreCoordinator.
我还有一种方法可以拉出用于显示的项目:
- (NSArray *)getItems
{
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Item"];
return [[self managedObjectContext] executeFetchRequest:fetchRequest error:nil];
}
Run Code Online (Sandbox Code Playgroud)
现在在我的主应用程序中,当我调用此getItems然后单独修改项目时,我有一个视图控制器.例如,set item.itemName = @"testName"; 然后调用我的save方法.
我也有一个iOS 8,在我的TodayViewController中我也调用了getItems方法.我有一个NSNotification,它检测managedObjectContext保存.
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(refetchItems) name:NSManagedObjectContextDidSaveNotification object:[[DataManager sharedInstance] managedObjectContext]];
Run Code Online (Sandbox Code Playgroud)
这些重新获取的项目会被调用,但会返回过时的NSManagedObjects.例如,itemName没有更改为@"testName".
我哪里错了?如果您需要查看任何其他代码,请告诉我们.
谢谢!
我已经设置了应用程序组并且正在使用NSUserDefaults initWith suiteName以允许我的应用程序和我的扩展程序访问相同的首选项集。我现在想用一个将通过 iCloud 同步这些首选项的实现替换该实现(如果它们启用了 iCloud)。
我已经阅读了NSUbiquitousKeyValueStore这似乎正是我所需要的。但是,文档指出“应用必须始终使用默认的 iCloud 键值存储对象来获取和设置值。此存储与您的应用在其权利请求中提供的唯一标识符字符串相关联。” 这让我相信,如果我采用这一点,应用扩展将不会访问与主应用相同的商店。扩展编程指南中没有提到共享这样的存储,它只提到了一个允许访问相同首选项但仅存储在该设备本地的解决方案。
如何实现也可以从该应用程序的扩展访问的简单首选项的 iCloud 同步?
另一个快速问题,iOS 8 有什么变化吗?我知道 iCloud API 发生了重大变化,但也许他们没有触及简单的首选项同步,只是实现了 iCloud Drive?
nsuserdefaults ios icloud nsubiquitouskeyvaluestore ios-app-extension
适用于iOS 8的全新Fleksy键盘版本具有键盘扩展功能.可以从包含Flexy.app更改键盘扩展名的颜色,而无需打开RequestsOpenAccess模式(或UI中的"允许完全访问").当包含应用程序和扩展程序没有共享容器时,这怎么可能?
(现在我考虑一下,这也是一个巨大的安全问题.如果包含的应用程序可以与键盘扩展程序通信,也许它也可以读取你的击键?我不是说Fleksy这样做,只是它应该原则上是不可能的,除非扩展被授予完全访问权限.)
我正在构建一个iOS 8自定义键盘,我想根据UIKeyboardType更改键盘的布局,但是,在UIInputViewController中读取键盘类型始终为0.任何建议?提前致谢!
- (void)viewDidLoad
{
[super viewDidLoad];
NSLog(@"TextInputMode: %ld", self.textDocumentProxy.keyboardType);
}
Run Code Online (Sandbox Code Playgroud)