Как добавить кнопку для доступа к фотогалерее на клавиатуре в swift? - PullRequest
0 голосов
/ 12 мая 2019

Я создаю приложение для чата и хочу добавить возможность отправки изображения.Вот почему я хотел бы добавить сочетание клавиш для доступа к галерее или камере телефона.

Я не вижу его в родном типе клавиатуры (https://developer.apple.com/documentation/uikit/uikeyboardtype), поэтому я полагаю, что должен делать это программно.

Я ничего не нашел об этом наstackOverflow или в Интернете.

Я бы хотел иметь доступ к клавиатуре, например, к той, которую вы можете иметь в iMessage, например.

1 Ответ

0 голосов
/ 12 мая 2019

Вы можете создать свой собственный вид над клавиатурой, отредактировав константы NSLayoutConstraint.Вот пример раскадровки.

раскадровка и ограничения

Тогда:

  • Подключите 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) } }

...