UITextViewをタップ後、UITextViewがついたUIAlertViewを表示できるようにコードを書いています。
下の画像のように、UIAlertView内のUITextViewで右上の完了ボタンを押すとキーボードを閉じられるようにしたいです。
しかし、commitButtonTapped()の中のself.view.endEditing(true)の処理が行われず、キーボードを閉じることができません。
自分では問題点がわからなかったため、質問させていただきました。
該当部分のコードは以下の通りです。
Swift
1 override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 2 if isTouch(touches: touches, view: memoTextView) { 3 print("TextView touch!!") 4 } 5 } 6 7 func isTouch(touches: Set<UITouch>, view:UIView) -> Bool{ 8 9 for touch: AnyObject in touches { 10 let t: UITouch = touch as! UITouch 11 if t.view?.tag == view.tag { 12 let alertController = UIAlertController(title: "\n\n\n\n\n\n", message: nil, preferredStyle: UIAlertController.Style.alert) 13 let margin:CGFloat = 8.0 14 let rect = CGRect(x: margin, y: margin, width: 255, height: 150.0) 15 let customView = UITextView(frame: rect) 16 customView.backgroundColor = UIColor.white 17 customView.textColor = .black 18 customView.font = UIFont(name: "Helvetica", size: 16) 19 customView.text = memoTextView.text 20 customView.delegate = self 21 22 // ツールバー生成 23 let toolBar = UIToolbar(frame: CGRect(x: 0, y: 0, width: 320, height: 40)) 24 // スタイルを設定 25 toolBar.barStyle = UIBarStyle.default 26 // 画面幅に合わせてサイズを変更 27 toolBar.sizeToFit() 28 // 閉じるボタンを右に配置 29 let spacer = UIBarButtonItem(barButtonSystemItem: UIBarButtonItem.SystemItem.flexibleSpace, target: self, action: nil) 30 // 閉じるボタン 31 let commitButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonItem.SystemItem.done, target: self, action: #selector(commitButtonTapped)) 32 // スペース、閉じるボタンを右側に配置 33 toolBar.items = [spacer, commitButton] 34 // textViewのキーボードにツールバーを設定 35 customView.inputAccessoryView = toolBar 36 37 38 alertController.view.addSubview(customView) 39 let somethingAction = UIAlertAction(title: "メモ編集", style: UIAlertAction.Style.default, handler: {(alert: UIAlertAction!) in 40 print(customView.text!) 41 self.memoTextView.text = customView.text 42 }) 43 let cancelAction = UIAlertAction(title: "キャンセル", style: UIAlertAction.Style.cancel, handler: {(alert: UIAlertAction!) in print("cancel")}) 44 alertController.addAction(somethingAction) 45 alertController.addAction(cancelAction) 46 self.present(alertController, animated: true, completion: nil) 47 48 return true 49 } else { 50 return false 51 } 52 } 53 return false 54 } 55 56 @objc func commitButtonTapped() { 57 self.view.endEditing(true) 58 } 59
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。