Keyboard swift操场UITextField生成的键盘太大
在MacOS上的操场上的斯威夫特。当用户单击UItextfield时,会生成一个键盘,但与视图相比它非常大,并且只有前几个键可用 最简单的例子:Keyboard swift操场UITextField生成的键盘太大,keyboard,uitextfield,swift-playground,Keyboard,Uitextfield,Swift Playground,在MacOS上的操场上的斯威夫特。当用户单击UItextfield时,会生成一个键盘,但与视图相比它非常大,并且只有前几个键可用 最简单的例子: import UIKit import PlaygroundSupport class TesterViewController : UIViewController { var testTextField : UITextField! override func loadView() { let view = UIView() vi
import UIKit
import PlaygroundSupport
class TesterViewController : UIViewController {
var testTextField : UITextField!
override func loadView() {
let view = UIView()
view.backgroundColor = .white
testTextField = UITextField()
testTextField.borderStyle = .roundedRect
testTextField.text = ""
view.addSubview(testTextField)
testTextField.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
testTextField.topAnchor.constraint(equalTo: view.topAnchor, constant: 20),
testTextField.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 20),
])
self.view = view
}
}
PlaygroundPage.current.liveView = TesterViewController()
截图
我面临同样的问题。似乎游乐场的硬编码屏幕大小为768x1024(在游乐场中运行
UIScreen.main.bounds
),并根据此大小显示键盘,与实时视图的实际大小无关
我提出的最佳解决方案是增加视图控制器的大小,使其与键盘匹配:
let vc = TesterViewController()
vc.preferredContentSize = vc.view.frame.size // or a custom CGSize
PlaygroundPage.current.liveView = vc
当然,这会使视图比您希望的更大,因此我仅在确实需要访问屏幕键盘进行测试时才使用此解决方法。系统键盘根据按键窗口大小显示,对于操场模拟器,大小为768x1024。看起来像是一只虫子 有效的解决方案: 应该传递具有自定义大小的窗口,而不是传递视图控制器
let window = UIWindow(frame: CGRect(x: 0,
y: 0,
width: 768,
height: 1024))
let viewController = MyViewController()
window.rootViewController = viewController
window.makeKeyAndVisible()
PlaygroundPage.current.liveView = window
适用于Xcode 11及以上版本(最新测试版本Xcode 12.2)
已编辑
我已经检查了建议使用“vc.preferredContentSize”的答案,但它不适合我。在Xcode 12.2中测试
let vc = TextFieldViewController()
vc.preferredContentSize = CGSize(width: 768,height: 1024)
PlaygroundPage.current.liveView = vc
回复Adobels(Seo 21'19)
我不知道他为什么提出不同的方法
我在2017年10月22日修改了巴罗博士的方法,如下所示(它也适用于Xcode 11):
如果不是内部工作,它们的结果都是相同的。这很好。谢谢令人沮丧的是,你不能改变操场的大小,但这个解决办法现在还可以。我创建了一个与UIScreen.main.bounds匹配的自定义CGsize,并将其用作我的首选内容大小。有没有更好的方法将用户文本输入UItextfield?我正在尝试为一组键盘UI游乐场制作一个优化版本。有没有一种方法可以看到操场,使它与iPad风格的键盘紧密配合?改变
窗口对我来说很有效,但不知道为什么改变视图控制器。
let vc = TextFieldViewController()
vc.preferredContentSize = CGSize.init(width: 768,height: 1024)
PlaygroundPage.current.liveView = vc