我正在尝试创建一个简单的今日扩展.我能够添加一个标签,其中值可以通过主应用程序更新.现在,我正在探索通过扩展更新主应用程序中的值的可能性.但是,当我尝试添加文本字段时,我无法输入任何内容.
这是扩展的限制吗?如果没有,你能指导我如何做到这一点吗?非常感谢你!
安装应用程序时,某些应用程序默认启用了“共享扩展”。Flickr 就是一个例子。
但是,其他应用程序不会 - 默认情况下不启用 OneNote、Wunderlist 等。
plist 文件中是否有一个设置来控制这个?我想知道我是否可以在我的应用程序启动时默认启用它,或者让用户同意默认启用它。
谢谢!
我正在尝试从我的键盘扩展中打开。我有自定义键盘,并且已从设置中添加该键盘。在我的自定义键盘上有一个“显示更多”按钮,我想点击这个按钮打开我的应用程序。
所以我尝试了以下代码:
let context = NSExtensionContext()
context.open(url! as URL, completionHandler: nil)
var responder = self as UIResponder?
while (responder != nil) {
if responder?.responds(to: Selector("openURL:")) == true {
responder?.perform(Selector("openURL:"), with: url)
}
responder = responder!.next
}
Run Code Online (Sandbox Code Playgroud)
它运行成功,但正如我们所知,swiftSelector("method_name:")已被弃用并#selector(classname.methodname(_:))改为使用,因此它发出警告。我想解决这个警告。所以我尝试过 Xcode 自动建议:
if responder?.responds(to: #selector(UIApplication.openURL(_:))) == true {
responder?.perform(#selector(UIApplication.openURL(_:)), with: url)
}
Run Code Online (Sandbox Code Playgroud)
也试过:
if responder?.responds(to: #selector(NSExtensionContext.open(_:))) == true {
responder?.perform(#selector(NSExtensionContext.open(_:)), with: url)
}
Run Code Online (Sandbox Code Playgroud)
我也尝试过其他可能的方法,但没有运气。如果有人知道该怎么做,请告诉我。
我提到了这个链接,Julio Bailon 的回答:
我创建了我的iMessage扩展,当我尝试打开它时,第一个屏幕出现但它完全冻结,并且它没有任何反应.
我把日志放在第一个视图的viewDidLoad中,没有任何内容出现在那里,几秒钟后我就可以看到那些日志了.
为了使应用程序冻结失去该状态,用户必须向左或向右和向后滑动屏幕.
我试过在网上寻找碰巧是相同的人,但我找不到任何东西.
如果你认为我应该提供一些额外的信息,请不要再想到更多的截图或部分代码添加
任何帮助,将不胜感激.
谢谢.
更新:
这是我的项目结构.
这是我的viewDidLoad代码.
- (void)viewDidLoad
{
[super viewDidLoad];
NSLog(@"here viewDidLoad iMessage ext~~~!");
[self applyCornerRadiusToBtn];
[self registerPresentationAction];
NSDictionary *user = [self getUserInfoFromHostApp];
if (user) {
NSLog(@"Here != null user info");
//It is assumed that when you enter this point and run this log, the app should navigate to the next screen, but it does not.
[self performSegueWithIdentifier:@"goToYoutubeListIm" sender:nil];
} else {
NSLog(@"Here userInfo null");
}
}
- (NSDictionary *)getUserInfoFromHostApp
{
NSUserDefaults *myDefaults …Run Code Online (Sandbox Code Playgroud) objective-c ios imessage ios-app-extension imessage-extension
通过 Cocoapods 和桥接头使用 Pinterest 的 iOS SDK,在我的应用程序中运行良好。
在我的项目中创建了新的目标 -> 操作扩展。尝试在链接框架和库中链接 PDK 框架,尝试在扩展中添加单独的桥接头文件,但 Xcode 崩溃无法找到它......关于如何导入它的任何想法?
播客文件:
platform :ios, '9.0'
pod "PinterestSDK", :git => "git@github.com:pinterest/ios-pdk.git"
pod "PINRemoteImage"
pod "GBDeviceInfo"
pod 'FBSDKCoreKit'
xcodeproj '/Users/garysabo/Dropbox/Xcode Projects/pinFixer2/pinFixer2.xcodeproj'
Run Code Online (Sandbox Code Playgroud)
桥接头:
#import "PinterestSDK.h"
#import "PDKPin.h"
#import "PDKBoard.h"
#import "PDKImageInfo.h"
#import "PDKResponseObject.h"
#import "PDKClient.h"
#import "PDKModelObject.h"
#import "PDKUser.h"
Run Code Online (Sandbox Code Playgroud) 我有这个扩展程序,它在应用程序目标中完美运行,但在尝试旋转相机上捕获的图像时在共享扩展程序中崩溃。如何在共享扩展中旋转图像?或者也许可以从照片库中以正确的方向加载图像。
extension UIImage {
func fixOrientation() -> UIImage {
switch imageOrientation {
case .up:
return self
default:
UIGraphicsBeginImageContextWithOptions(size, false, scale)
draw(in: CGRect(origin: .zero, size: size)) //Thread 1: EXC_RESOURCE RESOURCE_TYPE_MEMORY (limit=120 MB, unused=0x0)
let result = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return result!
}
}
}
Run Code Online (Sandbox Code Playgroud)
崩溃截图:
iOS 8允许我们创建自己的自定义键盘.是否可以使自定义键盘输出除未归因的NSStrings之外的任何其他内容?
我可以制作输出图像的键盘来说明消息应用程序,还是不可能?
我正在开发一个ios 8自定义键盘扩展.它像一个魅力开始运行.
但我总是在Xcode中得到"接收内存警告".所以我的自定义键盘扩展有时会突然终止.
但我在其主机应用程序中运行自定义键盘.没有任何问题.不要在Xcode中获得"接收内存警告".不要终止.
有人可以帮帮我吗?如果app对扩展使用有任何限制大小?
我目前正在构建自定义键盘,我几乎完成了。我遇到的一个问题是删除按钮。当用户点击删除按钮时,它会执行应做的操作并删除上一个文本条目。但是,当用户按下按钮时,什么也不会发生。我如何做到这一点,以便当用户按住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)
谢谢你的帮助。
我想用SiriKit开始锻炼.开始锻炼需要从app扩展程序打开主应用程序.
Apple为INStartWorkoutIntentHandling处理程序提供的样板是
func handle(startWorkout startWorkoutIntent: INStartWorkoutIntent, completion: (INStartWorkoutIntentResponse) -> Void) {
let userActivity = NSUserActivity(activityType: NSStringFromClass(INStartWorkoutIntent))
let response = INStartWorkoutIntentResponse(code: .success, userActivity: userActivity)
completion(response)
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能从这里打开自己的应用程序?像myapp://workout?action=start&name=pushups 这样的回答似乎没有相关性,因为我没有这个扩展类型UIViewController的extensionContext属性.
最后一个相关位:对于其他操作(暂停,结束)我宁愿不打开主应用程序,而只是暂停在主应用程序中运行的锻炼.我可以使用类似的自定义URL来暂停它,但这会打开应用程序,这是一个额外的不必要的步骤.有什么好方法告诉主应用程序在不打开应用程序的情况下从INExtension中采取特定操作?