我正在构建一个聊天应用程序,我想增加发送图像的机会。这就是为什么我想在键盘上添加一个快捷方式来访问图库或手机的摄像头。
我在本机键盘类型(https://developer.apple.com/documentation/uikit/uikeyboardtype)中看不到它,所以我想我必须以编程方式进行操作。
在stackOverflow或Internet上我什么都没找到。
我想使用键盘,例如可以在iMessage中使用的键盘。
答案 0 :(得分:0)
您可以通过编辑NSLayoutConstraint常量在键盘上方创建自己的视图。这是一个示例情节提要。
然后:
@IBOutlet weak var overKeyboardViewBottomConstraint: NSLayoutConstraint!
在viewDidLoad方法中添加键盘侦听器:
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name: UIResponder.keyboardWillShowNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide), name: UIResponder.keyboardWillHideNotification, object: nil)
为键盘创建选择器
@objc func keyboardWillShow(notification: Notification) {
if let keyboardSize = (notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue {
UIView.animate(withDuration: 0.5) { [unowned self, keyboardSize] in
self.overKeyboardViewBottomConstraint.constant = keyboardSize.height
self.view.layoutIfNeeded()
}
}
}
@objc func keyboardWillHide(notification: Notification) {
UIView.animate(withDuration: 0.5) { [unowned self] in
self.overKeyboardViewBottomConstraint.constant = 0
self.view.layoutIfNeeded()
}
}
然后将您的相机IBAction
@IBAction func cameraAction(_ sender: Any) {
let photos = PHPhotoLibrary.authorizationStatus()
switch photos {
case .notDetermined:
print("not determined")
PHPhotoLibrary.requestAuthorization({status in
if status == .authorized{
self.showGallery()
} else {
print("access denied")
}
})
case .authorized:
print("authorized")
self.showGallery()
case .denied:
print("denied")
default:
break
}
}
最后您的图库功能
func showGallery() {
if UIImagePickerController.isSourceTypeAvailable(.photoLibrary) {
let imagePicker = UIImagePickerController()
imagePicker.delegate = self
imagePicker.sourceType = .photoLibrary;
imagePicker.allowsEditing = true
self.present(imagePicker, animated: true, completion: nil)
}
}