我一直在尝试添加一些代码以在键盘出现时向上移动视图,但是,在尝试将Objective-
C示例转换为Swift时遇到了问题。我已经取得了一些进步,但是我仍然停留在一条特定的线上。
这是我一直关注的两个教程/问题:
如何使用Swift
http://www.ioscreator.com/tutorials/move-view-when-keyboard-appears
在键盘出现时向上移动UIViewController的内容
这是我目前拥有的代码:
override func viewWillAppear(animated: Bool) {
NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillShow:", name: UIKeyboardWillShowNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillHide:", name: UIKeyboardWillHideNotification, object: nil)
}
override func viewWillDisappear(animated: Bool) {
NSNotificationCenter.defaultCenter().removeObserver(self)
}
func keyboardWillShow(notification: NSNotification) {
var keyboardSize = notification.userInfo(valueForKey(UIKeyboardFrameBeginUserInfoKey))
UIEdgeInsets(top: 0, left: 0, bottom: keyboardSize.height, right: 0)
let frame = self.budgetEntryView.frame
frame.origin.y = frame.origin.y - keyboardSize
self.budgetEntryView.frame = frame
}
func keyboardWillHide(notification: NSNotification) {
//
}
目前,我在这条线上出现错误:
var keyboardSize = notification.userInfo(valueForKey(UIKeyboardFrameBeginUserInfoKey))
如果有人能让我知道这行代码应该是什么,我应该自己弄清楚其余的代码。
您的生产线存在一些问题
var keyboardSize = notification.userInfo(valueForKey(UIKeyboardFrameBeginUserInfoKey))
notification.userInfo
返回一个 可选的 dictionary [NSObject : AnyObject]?
,因此在访问它的值之前必须先将其拆开。NSDictionary
映射到Swift本机字典,因此您必须使用字典下标语法(dict[key]
)来访问值。NSValue
以便可以调用CGRectValue
它。所有这些都可以通过可选分配,可选链接和可选强制转换的组合来实现:
if let userInfo = notification.userInfo {
if let keyboardSize = (userInfo[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue() {
let contentInsets = UIEdgeInsets(top: 0, left: 0, bottom: keyboardSize.height, right: 0)
// ...
} else {
// no UIKeyboardFrameBeginUserInfoKey entry in userInfo
}
} else {
// no userInfo dictionary in notification
}
或一步:
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue() {
let contentInsets = UIEdgeInsets(top: 0, left: 0, bottom: keyboardSize.height, right: 0)
// ...
}
Swift 3.0.1(Xcode 8.1)更新:
if let userInfo = notification.userInfo {
if let keyboardSize = userInfo[UIKeyboardFrameBeginUserInfoKey] as? CGRect {
let contentInsets = UIEdgeInsets(top: 0, left: 0, bottom: keyboardSize.height, right: 0)
// ...
} else {
// no UIKeyboardFrameBeginUserInfoKey entry in userInfo
}
} else {
// no userInfo dictionary in notification
}
或一步:
if let keyboardSize = notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? CGRect {
let contentInsets = UIEdgeInsets(top: 0, left: 0, bottom: keyboardSize.height, right: 0)
// ...
}
问题内容: 我一直在尝试添加一些代码以在键盘 出现时向上移动视图,但是,在尝试将Objective-C 示例转换为Swift 时遇到了问题。我已经取得了一些进步,但是我仍然停留在一条 特定的线上。 这是我一直关注的两个教程/问题: 如何使用 Swift http://www.ioscreator.com/tutorials/move-view-when-keyboard-appears 在键盘出现
问题内容: 我尝试了几种方法来获取文件大小,但始终为零。 我在日志中: 问题答案: 使用而不是 +调用attr上的.fileSize()。 在Swift 2.0中,我们使用do try catch模式,如下所示: 在Swift 3.x / 4.0中:
问题内容: 我已经用Java设计了自己的合成器,现在我想将其与Midi键盘连接。我在下面的课程搜索所有带有发射器的Midi设备。它成功找到了我的Midi键盘。我将自己的接收器添加到每个设备的每个发送器中,以便它可以接收所有可能的信息。通过阅读所有帮助文档和Java文档,我知道Transmitter将MidiEvents发送给Receiver,然后由Receiver使用send方法处理它们。因此,我
问题内容: 我使用WKWebView登录到一个网站,现在我想解析该网站的html。如何快速访问HTML网站?我知道它如何用于UIWebView但不适用于WKWebView。 谢谢你的帮助! 问题答案: 如果您等到页面加载完毕,则可以使用: 您还可以注入一些JavaScript,使您返回HTML。 您可以注入的javascript如下所示:
我试图从DocuSign API获取用户信息后,我收到访问令牌(response_type=令牌)从隐式授予oAuth2调用。 我的代码如下所示: 有几点...DSAccess stoken是一个变量,其中包含从Documark接收的承载访问令牌。代码执行成功,但是当它假设包含json时,响应数据看起来像html。我还尝试了,但这也不起作用。我还尝试了而不是beFore发送,但这也不起作用。 我假
问题内容: 我有一本Swift字典。我想获得钥匙的价值。密钥方法的对象对我不起作用。如何获得字典键的值? 这是我的字典: 问题答案: 使用下标访问字典键的值。这将返回一个可选: 要么 您还可以枚举所有键和值: 或枚举所有值: