我正在尝试使用以下代码在动画中增加自定义键盘的高度.但我无法弄清楚为什么变化会立即发生,忽略动画.
//In viewDidAppear
[self.view needsUpdateConstraints];
[UIView animateWithDuration:2 animations:^{
CGFloat _expandedHeight = 500;
NSLayoutConstraint *_heightConstraint = [NSLayoutConstraint
constraintWithItem: self.view
attribute: NSLayoutAttributeHeight
relatedBy: NSLayoutRelationEqual
toItem: nil
attribute: NSLayoutAttributeNotAnAttribute
multiplier: 0.0
constant: _expandedHeight];
[self.view addConstraint: _heightConstraint];
[self.view layoutIfNeeded];
}];
Run Code Online (Sandbox Code Playgroud) 我正在尝试将地图添加到自定义键盘扩展程序中.在我尝试在键盘中添加MKMapView之后,当地图视图出现时我立即崩溃.所以我试图将谷歌地图添加到键盘.但运气不好,我收到错误:
Terminating app due to uncaught exception 'GMSBackgroundAppException', reason: 'Background execution would crash in this scenario'
我从谷歌地图文档中复制了确切的代码,我在另一个空白项目中运行了这个代码,并且它有效.但它只是在自定义键盘扩展中不起作用.它给了我上面的错误.如果您仍想查看以下代码:
- (void)viewDidLoad {
[super viewDidLoad];
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.86
longitude:151.20
zoom:6];
mapView_ = [GMSMapView mapWithFrame:CGRectZero camera:camera];
mapView_.myLocationEnabled = YES;
self.view = mapView_;
// Creates a marker in the center of the map.
GMSMarker *marker = [[GMSMarker alloc] init];
marker.position = CLLocationCoordinate2DMake(-33.86, 151.20);
marker.title = @"Sydney";
marker.snippet = @"Australia";
marker.map = mapView_;
}
Run Code Online (Sandbox Code Playgroud) google-maps mkmapview ios google-maps-sdk-ios ios-keyboard-extension
假设iPhone 6 Plus显示器处于标准模式(设置>显示>视图>标准),UIInputViewController inputView键盘扩展的返回宽度取决于主机应用程序是否针对iPhone 6/iPhone 6 Plus屏幕进行了优化.
例如,内置的Notes应用程序返回宽度为414点(未缩放),其中LINE应用程序(从v4.7.2开始)返回320点(缩放).
键盘扩展如何确定主机应用程序窗口的宽度(例如viewDidLoad,之前,之前viewDidiLoad)?
我有一个iOS键盘应用程序扩展,存在于应用程序商店中.最近,在测试将应用程序从版本1.0升级到1.1的效果时,我注意到当我按住标准iOS键盘上的地球图标时,我的应用程序名称显示为(null).还有其他人经历过这个吗?如果我在升级后打开键盘之前没有尝试打开配套应用程序,则会发生这种情况.如果我打开随播应用程序,这往往会消失.我在下面附上了一张图片.
更新:使用iOS控制台,我注意到以下日志条目:
Oct 5 16:16:40 Sarangan-Balasubramaniams-iPad SpringBoard[48] <Warning>: Installed apps did change.
Added: {(
)}
Removed: {(
)}
Modified: {(
"com.vijay.SuperKeyz"
)}
Oct 5 16:16:41 Sarangan-Balasubramaniams-iPad pkd[116] <Warning>: INSTALLED:com.vijay.SuperKeyz.keykeykeyboard com.vijay.SuperKeyz.keykeykeyboard(1.1) <__NSConcreteUUID 0x17d93870> AF3C211B-0871-49F1-89EF-433510FE85C4 /private/var/mobile/Containers/Bundle/Application/24643C20-B44F-47A4-ADB5-57EA10FF9CF0/SuperKeyz.app/PlugIns/keykeykeyboard.appex
Oct 5 16:16:46 Sarangan-Balasubramaniams-iPad pkd[116] <Warning>: assigning plug-in com.vijay.SuperKeyz.keykeykeyboard(1.0) to keyboard sandbox
Oct 5 16:16:46 Sarangan-Balasubramaniams-iPad pkd[116] <Warning>: enabling pid=1662 for plug-in com.vijay.SuperKeyz.keykeykeyboard(1.0) 4DAC067D-4E00-48A0-86CB-7519AC750C8A /private/var/mobile/Containers/Bundle/Application/8CA610CD-672B-40ED-A564-08EB2D90FD11/SuperKeyz.app/PlugIns/keykeykeyboard.appex
Oct 5 16:16:46 Sarangan-Balasubramaniams-iPad MobileSMS[1662] <Warning>: Communications error: <OS_xpc_dictionary: <dictionary: 0x158928a0> { count = 2, contents = …Run Code Online (Sandbox Code Playgroud) 我使用扫描按钮创建了键盘扩展名,以在包含的应用程序中打开条形码扫描仪。扫描完成后,它应导航回到初始应用程序,并且条形码数据应设置为启动键盘的文本字段的文本,然后单击扫描按钮。
有这个应用程序Scandit Wedge用同样的方式做。但我找不到实现相同目标的方法。请参考下面的GIF。
https://s3.amazonaws.com/id123-dev-ios/scandit.gif
任何帮助将非常感激。
deep-linking ios swift ios-keyboard-extension ios-extensions
适用于iOS 8的全新Fleksy键盘版本具有键盘扩展功能.可以从包含Flexy.app更改键盘扩展名的颜色,而无需打开RequestsOpenAccess模式(或UI中的"允许完全访问").当包含应用程序和扩展程序没有共享容器时,这怎么可能?
(现在我考虑一下,这也是一个巨大的安全问题.如果包含的应用程序可以与键盘扩展程序通信,也许它也可以读取你的击键?我不是说Fleksy这样做,只是它应该原则上是不可能的,除非扩展被授予完全访问权限.)
我正在尝试创建自定义iOS键盘.我使用UILexicon类来提供requestSupplementaryLexiconWithCompletion:方法提供的单词的基本词典.
但我想在键盘上添加Predictive Text.
我知道即使你尝试使用完全的努力也无法创建单词数据库.
所以,我相信没有人会用他们自己的键盘做到这一点.必须有一个预先创建的单词数据库,我知道.
即使我找到这些单词的数据库,我也不明白如何基于上一个单词提供建议.
任何人都可以指出一个好的,值得信赖的资源,它可以为我提供我想要的结果,并给我一个英语词典和其他语言的数据库.
请建议在应用程序中使用数据库的方法.
iOS上的键盘扩展是类的子UIInputViewController类,并具有textDocumentProxy与底层文档交互的属性.该textDocumentProxy对象公开了文档的一些重要特征,如自动资本化类型.问题是,键盘扩展如何知道基础文档何时发生变化?
例如,当我点击在消息应用程序中撰写新消息时,"收件人"字段使用与消息正文输入框不同的输入特征.但是,由于在将焦点从一个字段切换到另一个字段时键盘不会消失,因此文本文档代理对象即时更改.键盘扩展可以注意到这样的变化吗?
我试过通过KVO 观察textDocumentProxy和[[self textDocumentProxy] autocapitalizationType]属性,但这不起作用.autocapitalizationType使用计时器检查属性会显示更改,但显然我想避免使用轮询解决方案.
我无法使用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有背景颜色,唯一的作品.
我正在开发自定义键盘扩展。到目前为止,它在模拟器和设备中都运行良好。
经过一些小的更改(添加import AudioToolbox一个类和一个命令)它突然停止在设备上工作。该应用程序编译并运行,但随后我激活了我的键盘 XCode 显示以下错误:
Lost connection to "My iPhone".
Restore the connection to "My iPhone" and run "xxx.xxx.xxx.xxx-Keyboard"
again, or if "xxx.xxx.xxx.xxx-Keyboard" is still running, you can
attach to it by selecting Debug > Attach to Process > xxx.xxx.xxx.xxx-Keyboard.
Run Code Online (Sandbox Code Playgroud)
这个错误看起来像是在拔出 iPhone 电缆时出现的错误,但在这种情况下电缆没问题。
我的键盘本身没有启动 - 激活时(使用地球键)有几秒钟的延迟(当我的键盘在调试中加载时这是正常的),然后显示以前活动的键盘。
该项目有一个月的开发时间,我完全堆栈,因此非常感谢任何帮助。
ios ×10
ios8 ×3
deep-linking ×1
google-maps ×1
ios9 ×1
iphone ×1
iphone-6 ×1
keyboard ×1
mkmapview ×1
prediction ×1
security ×1
swift ×1
uikit ×1