swift
import UIKitimport DKImagePickerController class hennsyuViewController: UIViewController,UIImagePickerControllerDelegate,UINavigationControllerDelegate,UITextFieldDelegate, UITextViewDelegate { var completButtonItem:UIBarButtonItem! @IBOutlet weak var textField: UITextView! @IBOutlet weak var dateField: UITextField! @IBOutlet weak var hyoukaField: UITextField! @IBOutlet weak var addressField: UITextField! @IBOutlet weak var nameField: UITextField! var photos: [UIImage] = [] // 実際に選択された枚数 var selectedCount = 0 let pickerController = DKImagePickerController() override func viewDidLoad() { super.viewDidLoad() dateField.delegate = self hyoukaField.delegate = self addressField.delegate = self nameField.delegate = self textField.delegate = self // checkpermission.checkCamera() let appearance = UINavigationBarAppearance() appearance.configureWithOpaqueBackground() appearance.backgroundColor = .rgb(red: 173, green: 216, blue: 230) navigationController?.navigationBar.tintColor = UIColor.white //標準の高さ navigationItem.standardAppearance = appearance //ナビゲーションバーが透過する navigationItem.scrollEdgeAppearance = appearance //標準の文字の大きさ navigationItem.compactAppearance = appearance completButtonItem = UIBarButtonItem(title: "完了", style: .done, target: self, action: #selector(completButtonTapped(_:))) self.navigationItem.rightBarButtonItem = completButtonItem dateField.setUnderLine() hyoukaField.setUnderLine() addressField.setUnderLine() nameField.setUnderLine() let toolBar = UIToolbar() toolBar.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 40) let spacer = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: self, action: nil) let kbDoneButton = UIBarButtonItem(title: "閉じる", style: .done, target: self, action:#selector(kbDoneTaped) ) toolBar.items = [spacer,kbDoneButton] textField.inputAccessoryView = toolBar } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) NotificationCenter.default.addObserver(self, selector: #selector(hennsyuViewController.keyboardShow(_:)), name: UIResponder.keyboardWillShowNotification, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(hennsyuViewController.keyboardHide(_:)), name: UIResponder.keyboardDidHideNotification, object: nil) } @IBAction func addImageButton(_ sender: Any) { pickerController.maxSelectableCount = 5 //カメラモード、写真モードの選択 pickerController.sourceType = .photo //キャンセルボタンの有効化 pickerController.showsCancelButton = true pickerController.UIDelegate = CustomUIDelegate() // pickerController.didSelectAssets = { (assets: [DKAsset]) in// // ここでは一旦全削除する// self.photos.removeAll()// // assets に保存された枚数// self.selectedCount = assets.count//// for asset in assets {// // asset からのダウンロードは非同期(iCloudなどにアクセスするため)// asset.fetchFullScreenImage(completeBlock: { (image, info) in// // もし image が nil だったら早期リターン// guard let image = image else {// self.selectedCount -= 1// return// }// // photos に追加// self.photos.append(image)// })// }// } pickerController.modalPresentationStyle = .fullScreen present(pickerController, animated: true, completion: nil) } func textFieldShouldReturn(_ textField: UITextField) -> Bool { dateField.resignFirstResponder() hyoukaField.resignFirstResponder() addressField.resignFirstResponder() nameField.resignFirstResponder() return true } override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?){ self.view.endEditing(true) } @objc func keyboardShow(_ notification: Notification){ if !textField.isFirstResponder { return } if self.view.frame.origin.y == 0 { if let keyboardRect = (notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue { self.view.frame.origin.y -= keyboardRect.height } } } @objc func keyboardHide(_ notification: Notification){ if self.view.frame.origin.y != 0 { self.view.frame.origin.y = 0 } } @objc func kbDoneTaped (_ sender:UIButton){ self.view.endEditing(true) } //完了ボタンを押した時 @objc func completButtonTapped(_ sender: UIBarButtonItem){ // UserDefaults.standard.set(textField.text, forKey: "textView")// UserDefaults.standard.set(nameField.text, forKey: "nameField")// UserDefaults.standard.set(addressField.text, forKey: "addressField")// UserDefaults.standard.set(dateField.text, forKey: "dateField")// UserDefaults.standard.set(hyoukaField.text, forKey: "hyoukaField") if let n = navigationController, n.viewControllers[n.viewControllers.count - 2] is nikkiTableViewController { // ①から遷移してきた場合は完了をタップしたことを表すフラグを設定します。 AppState.isEdited = true } navigationController?.popViewController(animated: true) }}
0 コメント