我们可以在iOS 8(Xcode Beta版)的其他视图中使用NSlog进行登录.
但是,我不能在KeyboardViewController的键盘扩展中使用NSLog.它没有出现在日志中.
NSLog(@"键盘中的viewdidload");
我想知道如何实时检测/登录.
我正在尝试从扩展程序启动容器应用程序.(一个Action扩展)容器应用程序有一个工作URL方案(例如://),我可以通过在Safari中导航到该URL来验证这一点.
当我尝试使用 - [NSExtensionContext openURL:completionHandler:]来启动容器应用程序时,我得到一个不成功的回调,没有任何反应.
iOS 8 Beta 2更改说openURL方法现在应该可以正常工作,但这仍然是一个错误还是我做错了什么?
我现在正在开发iOS 8自定义键盘扩展,还有一些我无法弄清楚的问题.
首先,我认为UITextInputDelegate方法没有按照我的预期运作.
这听起来是正确的:selectionWillChange:和selectionDidChange:方法应该当用户长时间打字印刷机区域叫什么名字?而textWillChange:和textDidChange:方法应该每当文字字面上改变被称为?
实际上,我观察到的是,当我在文本输入区域中更改选择textWillChange:并被textDidChange:调用时,我无法得到其他两种方法在什么条件下被调用的线索.如果有人知道这些委托方法的用法,请告诉我.
其次,我知道该playInputClick:方法可用于虚拟化自定义键盘中的键盘点击声.由于这适用于正常情况,我发现无法在iOS 8自定义键盘扩展中应用.我的应用程序包含一个键盘视图控制器,以及将子类UIView添加到此视图控制器的自定义视图.我的方法是UIInputViewAudioFeedback在此自定义视图中声明委托,enableInputClicksWhenVisible方法返回YES,[[UIDevice currentDevice] playInputClick]设置调用的类方法,然后在需要键盘声音的任何地方调用此方法:这根本不起作用.
我的方法有什么不对吗?如果有人成功使用playInputClick方法,请分享你的智慧.
谢谢
iOS8上.今天的扩展.尝试创建几行(2-5)的简单表视图.在模拟器中运行良好.加载tableView后的内存使用情况,根据Xcode分析器显示〜30M.
在iPhone 5S上使用最新的beta drop(5)运行相同的扩展程序时,tableView会出现并立即从屏幕上消失.Xcode中的控制台登录显示了许多"内存警告"消息.几次尝试加载扩展面板后,只会显示"加载失败".
有什么想法在这里发生了什么?
我无法使用a UIScreenEdgePanGestureRecognizer来识别自定义键盘扩展中屏幕右边缘或左边缘的边缘滑动.我创建了一个新项目来测试它.其他UIGestureRecognizer人的工作很好,如下所述.
@implementation KeyboardViewController // A subclass of UIInputViewController
...
-(void)viewDidLoad {
...
UIScreenEdgePanGestureRecognizer *gestureRecognizer = [[UIScreenEdgePanGestureRecognizer alloc] initWithTarget:self action:@selector(handleGesture)];
[gestureRecognizer setEdges:UIRectEdgeAll];
[self.view addGestureRecognizer:gestureRecognizer];
}
- (void)handleGesture
{
NSLog(@"gesture handled");
}
Run Code Online (Sandbox Code Playgroud)
如果我将其更改为a UIPanGestureRecognizer或UITapGestureRecognizer我gesture handled在控制台中看到的.我可以使用UIPanGestureRecognizer只接受在屏幕边缘附近开始的手势.
Kiwi Keyboard使用这样的解决方法.
警告:UIPanGestureRecognizer如果self.view有背景颜色,唯一的作品.
我有一个应用程序扩展名(Fileprovider-Extension),当我更改FileProvider位置时,该图标未显示(请参见屏幕截图)。这仅在iOS版本为8.4的设备(也包括模拟器)上发生!
我已经检查了:
当我(最初)点击更多按钮来管理我的位置时,我(也在iOS 8.4设备上)从主机应用程序中看到了AppIcon……这确实让我感到困惑。
另一台运行iOS 8.1的设备在该点上显示了一个图标,但这不是扩展名为xcasset-catalog的图标,而是显示了来自Host-Application的AppIcon。
我还尝试了以下问题的答案:SO:为什么我的ios8应用程序操作扩展应用程序图标没有显示,但没有任何帮助。
有人可以给我提示我看过的一点吗?
我正在应用程序中选择照片,我已经习惯UIDocumentMenuViewController显示文档提供程序的扩展名列表.此列表显示Dropbox,iCloud,GoogleDrive但不是原生照片应用,为什么?我的代码示例:
UIDocumentMenuViewController *menuVC = [[UIDocumentMenuViewController alloc] initWithDocumentTypes:@[@"public.image"] inMode:UIDocumentPickerModeImport];
Run Code Online (Sandbox Code Playgroud)
根据文档,操作扩展显示在操作表或全屏模式视图中.但对于iPhone纵向方向,默认情况下始终为全屏.如何在iPhone纵向方向的操作表中显示操作扩展视图?
我曾尝试setPreferredContentSize和NSExtensionActionWantsFullScreenPresentation.两者似乎都没有影响iPhone纵向.
我正在为我的应用程序开发一个共享扩展程序,以便能够使用它直接从库中共享图像。我有一个视图控制器和布局设置,但我正在努力让所选图像显示在UIImageView视图控制器内部。
目前,我的getImage()情况如下:
func getImage() {
if let inputItem = extensionContext!.inputItems.first as? NSExtensionItem {
if let itemProvider = inputItem.attachments?.first as? NSItemProvider {
itemProvider.loadItem(forTypeIdentifier: kUTTypeJPEG as String) { [unowned self] (imageData, error) in
if let item = imageData as? Data {
self.imageView.image = UIImage(data: item)
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
...但图像未加载。我在这里做错了什么?
我有一个进行网络调用的类。我希望能够在主应用程序和应用程序扩展中使用此类。但是,在本课程中我使用:UIApplication.shared.isNetworkActivityIndicatorVisible.
由于shared在应用程序扩展中不可用,有没有一种方法可以让我使用类似的东西#available,这样我就不必仅仅因为这一行代码而复制此类?(我可以删除活动指示器,但我不想这样做,因为我想让用户知道网络调用何时发生)
我已经尝试按照我在另一个问题上找到的答案的建议添加预编译的宏,但编译仍然会抱怨。
ios ×9
ios8 ×4
objective-c ×3
keyboard ×2
swift ×2
iphone ×1
nslog ×1
uikit ×1
uitableview ×1
xcode6 ×1