我目前正在编写一个心智映射应用程序,在该应用程序用户可以添加文本框,无论他们想在一个空白页上。有没有办法做这样的事。我想出的一种不专业的方法是向ViewController中添加几百个空文本框,然后用户就可以填写了。不过,我相信还有更好的办法。如果用户可以点击一个“添加文本”按钮来生成一个文本字段(就像在Microsoft中一样),可以在空白页上移动,那就太好了。我真的想不出有哪一门课能解决这样的任务。有人能帮忙吗?
干杯
发布于 2015-12-28 04:57:20
您可以始终以编程方式创建文本字段。在ViewController文件中,您需要创建一个UITextField实例。有关UITextField的信息,请查看这份文件。
例如,在iOS上,当用户用一个或多个手指触摸屏幕时,将在上调用方法。当用户触摸屏幕时,iOS调用视图控制器上的touchesBegan和touchesEnded。在您的示例中,您可能需要touchesEnded,以便在用户举起手指之前不会添加字段。这些方法传递一组UITouch的. UITouch类引用。
Swift中的示例查看控制器代码:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) {
print("Touch Ended")
for touch in touches {
let touchPoint = touch.locationInView(self.view)
let fieldFrame = CGRect(x: touchPoint.x, y: touchPoint.y, width: 100, height: 30)
let textField = UITextField(frame: fieldFrame)
textField.placeholder = "Type Here"
view.addSubview(textField)
}
}
}您可能已经知道如何以编程方式布局视图,但是…
此代码查找触摸的位置,并将该位置作为textfield的来源。在这里,我只是在添加视图之前为textField设置框架,硬编码宽度为100,高度为30。在实践中,您可能希望了解一些类似AutoLayout的内容,特别是NSLayoutConstraint,它允许对边界进行更改的编程约束。如果一次用多根手指触摸屏幕,您可能也不想为每一次触摸添加文本字段。
这允许将字段放置在用户接触的任何位置。或者,您可以创建一个按钮来添加文本字段,就像您说的那样,然后为添加UITextField提供一个默认位置,而不是观察触摸。
拖动文本字段
要在用户拖动文本字段时移动该字段,您需要观察一个触摸,并在触摸处检查文本字段,它本质上是在某一点上检查子视图。
然后,您可以使用touchesMoved观察一个拖放,并通过AutoLayout或您决定使用的任何过程更新textfield的位置。
手势识别器
作为touchesBegan、touchesMoved、touchesEnded的替代,您可以使用手势识别器。请参阅来自苹果的文档的不同类型的苹果的文档的信息。这些信息可以通过指定目标和操作方法来创建,然后添加到视图中。例如创建一个点击手势识别器并将其添加到存储在一个名为textfield的变量中的UITextField中。
let tapRecognizer = UITapGestureRecognizer(target: self, action: Selector("textFieldTapped:"))
textfield.addGestureRecognizer(tapRecognizer)https://stackoverflow.com/questions/34485020
复制相似问题