我正在编写自己的自定义键盘.而且我不知道如何将我的设置包(在手机中设置)与我的键盘扩展连接,所以如果有人从手机设置更改设置,之后打开一些文本字段来写一些我的键盘已经知道的内容而不是他所做的更改设置.我试图创建应用程序组以将我的应用程序与我的扩展程序连接,并在我的视图控制器中添加观察者,NSUserDefaultsDidChangeNotification例如:
var notificationCenter = NSNotificationCenter.defaultCenter()
notificationCenter.addObserver(self, selector: "settingsDidChange:", name: NSUserDefaultsDidChangeNotification, object: nil)
Run Code Online (Sandbox Code Playgroud)
当有人在设置settingsDidChange:方法中进行更改时,我将调用我需要阅读的所有内容到我的应用程序组中,以便从我的扩展程序中读取它.但这种方法将只有当人打开我的应用程序调用,所以如果有人改变从手机设置中设定并不会打开的应用程序我的键盘不会改变.那么如何为键盘实现我的设置包呢?
根据文档,更改自定义键盘的高度很简单.这是Apple文档中显示的swift等效版本的代码
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
let constraint = NSLayoutConstraint(item: self.view, attribute: .Height, relatedBy: .Equal, toItem: nil, attribute: .NotAnAttribute, multiplier: 0.0, constant: 400.0)
self.view.addConstraint(constraint)
}
Run Code Online (Sandbox Code Playgroud)
这确实有效,但它会将高度更改为CONSTANT值,如果更改设备的方向,则该值不可取.在纵向模式下将键盘高度设置为400.0可能没问题,但在横向模式下可能不合适.例如:iPhone 5的标准键盘视图大小为纵向320,216和横向568,162.设置恒定高度会将键盘视图大小更改为纵向的320,400和横向的568,400(实际上是整个屏幕).
我现在唯一想到的是创建一个字典,其中包含每种设备类型和每个方向的键盘视图大小,然后在每次设备更改方向时更新恒定高度约束.有没有人找到更优雅的解决方案?
我最近更新了我的应用程序以实现Material Design.为了使应用程序向后兼容,我将appBaseTheme从"Theme.Holo.Light.DarkActionBar"更改为"Theme.AppCompat.Light.DarkActionBar".但是,我有一个自定义键盘,不断出现在旧的holo主题中.
我想我必须使用一个名为"Widget.Material.Light.KeyboardView"的样式,但我得到的消息是:
错误:资源不公开
当我尝试在我的keyboardView的theme属性中使用它时.我想要的只是我的键盘看起来类似于新的Lollipop键盘.有谁能够帮我?
在iOS 9的iOS 9中,键盘上方有一个工具栏(称为快捷方式栏),提供撤消,重做和粘贴按钮.它在使用系统键盘或第三方键盘时出现,但它不会出现在表情符号键盘上方.我的自定义键盘扩展程序正在使用时,我不希望此工具栏可见,因为我的键盘类似于表情符号键盘.(请注意,我所说的是可以在任何应用中使用的自定义键盘扩展,而不是当文本字段成为您自己应用中的第一响应者时显示的键盘.)那么如何删除它呢?
如何在iOS 10中以编程方式打开键盘的设置屏幕?
此代码在iOS 10中不起作用
NSURL *keyboardSettingsURL = [NSURL URLWithString: @"prefs:root=General&path=Keyboard/KEYBOARDS"];
[[UIApplication sharedApplication] openURL:keyboardSettingsURL];
Run Code Online (Sandbox Code Playgroud)
并添加了URL Scheme
最近iOS有iOS 10的更新并且开发人员有一些变化,其中一个变化是现在我们无法检查允许完全访问我们之前做过的方式在下面给出
-(BOOL)isOpenAccessGranted{
return [UIPasteboard generalPasteboard];
}
Run Code Online (Sandbox Code Playgroud)
我搜索了最新的UIPasteboard开发者指南,但无法解决.有没有人有一个适当的解决方案.
我正在使用最新的Android Studio和Kotlin为Android(API 100%用户)制作系统键盘。我正在尝试遵循IME的生命周期。
有关于覆盖onCreateInputView()的指南
override fun onCreateInputView(): View {
return layoutInflater.inflate(R.layout.input, null).apply {
if (this is MyKeyboardView) {
setOnKeyboardActionListener(this@MyInputMethod)
keyboard = latinKeyboard
}
}
}
Run Code Online (Sandbox Code Playgroud)
其中MyKeyboardView是呈现键盘的KeyboardView的自定义实现的实例。
该问题仅是因为android.inputmethodservice.KeyboardView自API级别29起已弃用。
不推荐使用此类,因为这只是一个方便的UI小部件类,应用程序开发人员可以在现有的公共API之上重新实现该类。
我不想使用不推荐使用的功能,但由于该更改,指南尚未更新。制作我自己的残酷方法是在约束布局中创建大量按钮。这是正确的方法吗?作为一个完整的初学者,一旦我无法遵循指南,就会迷路。
我正在为 iOS 开发一个自定义键盘。例如,当我在 Safari 中使用自定义键盘时,我的键盘上有一个按钮可以跳转到包含应用程序的键盘。然后在我的键盘应用程序中,左上角有 iOS 特定的“<- Safari”按钮,可以跳回 Safari。
是否可以以编程方式跳回源应用程序(在我的示例 Safari 中)?
或者我可以将原始 url 方案发送到我的包含应用程序,然后通过 url 方案打开以前的应用程序(可以是任何)?
这一定是可能的,因为 Scandit Wedge 应用程序正是我想要的。我创建了一个没有任何 url 方案的空测试应用程序,使用 Scandit Wedge 键盘,我可以转到 Scandit 应用程序,读取条形码,然后它会自动返回到源应用程序。
我使用 MSKLC 制作了自定义键盘布局。我以为我仔细按照说明操作并为和参数选择了适当的值。LOCALENAMELOCALID
但是,在通过按Win+Space或在任务栏上显示的切换键盘弹出窗口中,未显示与我的自定义布局相关联的国家/地区。
如何创作我的布局,以便 Windows 知道它应该关联的国家/地区?
custom-keyboard ×10
ios ×7
swift ×3
ios10 ×2
android ×1
deep-linking ×1
ios8 ×1
keyboard ×1
msklc ×1
objective-c ×1
uipasteboard ×1
url-scheme ×1