使用 func 从文本视图数组中退出第一响应者
using a func resign first responder from a array of textviews
我的代码使用 didTapAdd 函数向视图控制器添加无限量的文本视图。问题是我不能移动它,因为它是一个文本视图。如果它是标签或图像视图,这将完美地工作。我想以某种方式做一些事情,比如调用 everttime didtapadd2 的开关,我希望所有的文本视图都无法输入,这样我就可以移动它们,然后再次调用 func 将其关闭。
import UIKit
class ViewController: UIViewController {
var addButton = UIButton()
var cutOff = UIButton()
var count: Int = 0
var ht = -90
var arrTextFields = [UITextView]()
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(addButton);view.addSubview(cutOff)
cutOff.backgroundColor = .systemPink
addButton.backgroundColor = .systemOrange
addButton.frame = CGRect(x: view.bounds.midX - 80, y: view.bounds.midY, width: 50, height: 50)
cutOff.frame = CGRect(x: view.bounds.midX - 80, y: view.bounds.midY+60, width: 50, height: 50)
addButton.addTarget(self, action: #selector(didTapAdd), for: .touchUpInside)
cutOff.addTarget(self, action: #selector(didTapAdd2), for: .touchUpInside)
}
@objc func didTapAdd() {
let subview = UITextView()
subview.isUserInteractionEnabled = true
subview.isMultipleTouchEnabled = true
arrTextFields.append(subview)
view.addSubview(subview)
subview.frame = CGRect(x: view.bounds.midX - 0, y: view.bounds.midY + CGFloat(ht), width: 50, height: 30)
subview.backgroundColor = .systemTeal
subview.tag = count
let pan = UIPanGestureRecognizer(target: self, action: #selector(handlePanGesture(_:)))
subview.addGestureRecognizer(pan)
count += 1
ht += 50
arrTextFields.append(subview)
}
@objc func didTapAdd2() {
cutOff.isSelected = !cutOff.isSelected
arrTextFields.forEach { [=10=].isScrollEnabled = cutOff.isSelected }
}
@objc func handlePanGesture(_ gesture: UIPanGestureRecognizer) {
let draggedView = gesture.view!
view.bringSubviewToFront(draggedView)
let translation = gesture.translation(in: view)
draggedView.center = CGPoint(x: draggedView.center.x + translation.x, y: draggedView.center.y + translation.y)
gesture.setTranslation(.zero, in: view)
}
}
我有适合您代码的解决方案,希望这就是您要找的。
因此,首先在 ht
变量下方创建 UITextView
数组,如下所示:
var arrTextFields = [UITextView]()
然后在 didTapAdd
方法内添加数组内的子视图,所以在 ht += 50
之后添加以下行
arrTextFields.append(subview)
现在在didTapAdd2
方法里面,写下面的代码
@objc func didTapAdd2() {
self.view.endEditing(true)
cutOff.isSelected = !cutOff.isSelected
arrTextFields.forEach { [=12=].isScrollEnabled = cutOff.isSelected }
}
希望这能解决您的问题。
我的代码使用 didTapAdd 函数向视图控制器添加无限量的文本视图。问题是我不能移动它,因为它是一个文本视图。如果它是标签或图像视图,这将完美地工作。我想以某种方式做一些事情,比如调用 everttime didtapadd2 的开关,我希望所有的文本视图都无法输入,这样我就可以移动它们,然后再次调用 func 将其关闭。
import UIKit
class ViewController: UIViewController {
var addButton = UIButton()
var cutOff = UIButton()
var count: Int = 0
var ht = -90
var arrTextFields = [UITextView]()
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(addButton);view.addSubview(cutOff)
cutOff.backgroundColor = .systemPink
addButton.backgroundColor = .systemOrange
addButton.frame = CGRect(x: view.bounds.midX - 80, y: view.bounds.midY, width: 50, height: 50)
cutOff.frame = CGRect(x: view.bounds.midX - 80, y: view.bounds.midY+60, width: 50, height: 50)
addButton.addTarget(self, action: #selector(didTapAdd), for: .touchUpInside)
cutOff.addTarget(self, action: #selector(didTapAdd2), for: .touchUpInside)
}
@objc func didTapAdd() {
let subview = UITextView()
subview.isUserInteractionEnabled = true
subview.isMultipleTouchEnabled = true
arrTextFields.append(subview)
view.addSubview(subview)
subview.frame = CGRect(x: view.bounds.midX - 0, y: view.bounds.midY + CGFloat(ht), width: 50, height: 30)
subview.backgroundColor = .systemTeal
subview.tag = count
let pan = UIPanGestureRecognizer(target: self, action: #selector(handlePanGesture(_:)))
subview.addGestureRecognizer(pan)
count += 1
ht += 50
arrTextFields.append(subview)
}
@objc func didTapAdd2() {
cutOff.isSelected = !cutOff.isSelected
arrTextFields.forEach { [=10=].isScrollEnabled = cutOff.isSelected }
}
@objc func handlePanGesture(_ gesture: UIPanGestureRecognizer) {
let draggedView = gesture.view!
view.bringSubviewToFront(draggedView)
let translation = gesture.translation(in: view)
draggedView.center = CGPoint(x: draggedView.center.x + translation.x, y: draggedView.center.y + translation.y)
gesture.setTranslation(.zero, in: view)
}
}
我有适合您代码的解决方案,希望这就是您要找的。
因此,首先在 ht
变量下方创建 UITextView
数组,如下所示:
var arrTextFields = [UITextView]()
然后在 didTapAdd
方法内添加数组内的子视图,所以在 ht += 50
arrTextFields.append(subview)
现在在didTapAdd2
方法里面,写下面的代码
@objc func didTapAdd2() {
self.view.endEditing(true)
cutOff.isSelected = !cutOff.isSelected
arrTextFields.forEach { [=12=].isScrollEnabled = cutOff.isSelected }
}
希望这能解决您的问题。