首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为MindMapping应用程序Swift/xcode生成应用程序中的文本字段

为MindMapping应用程序Swift/xcode生成应用程序中的文本字段
EN

Stack Overflow用户
提问于 2015-12-27 21:29:56
回答 1查看 613关注 0票数 0

我目前正在编写一个心智映射应用程序,在该应用程序用户可以添加文本框,无论他们想在一个空白页上。有没有办法做这样的事。我想出的一种不专业的方法是向ViewController中添加几百个空文本框,然后用户就可以填写了。不过,我相信还有更好的办法。如果用户可以点击一个“添加文本”按钮来生成一个文本字段(就像在Microsoft中一样),可以在空白页上移动,那就太好了。我真的想不出有哪一门课能解决这样的任务。有人能帮忙吗?

干杯

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-28 04:57:20

您可以始终以编程方式创建文本字段。在ViewController文件中,您需要创建一个UITextField实例。有关UITextField的信息,请查看这份文件

例如,在iOS上,当用户用一个或多个手指触摸屏幕时,将在上调用方法。当用户触摸屏幕时,iOS调用视图控制器上的touchesBegantouchesEnded。在您的示例中,您可能需要touchesEnded,以便在用户举起手指之前不会添加字段。这些方法传递一组UITouch的. UITouch类引用

Swift中的示例查看控制器代码:

代码语言:javascript
复制
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的位置。

手势识别器

作为touchesBegantouchesMovedtouchesEnded的替代,您可以使用手势识别器。请参阅来自苹果的文档的不同类型的苹果的文档的信息。这些信息可以通过指定目标和操作方法来创建,然后添加到视图中。例如创建一个点击手势识别器并将其添加到存储在一个名为textfield的变量中的UITextField中。

代码语言:javascript
复制
let tapRecognizer = UITapGestureRecognizer(target: self, action: Selector("textFieldTapped:"))
textfield.addGestureRecognizer(tapRecognizer)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34485020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档