iOS   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 存储UITextView字符串/文本数据大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
所以我试图创建一个显示可编辑的大文本视图的视图.在故事板中,它被编辑以显示文本“在此处记笔记(向下滑动以关闭键盘):”作为占位符.

我希望它记住当用户编辑文本而不是那个…所以我使用了!=该比较器用于比较swift中的字符串.我不确定它是否会得到应用商店评论的批准,因为他们推荐使用isEqualToString().

无论如何,下面的代码是针对该视图的…如果用户从占位符更改了文本,则不记得输入的文本.它识别它已被更改,但当您返回到视图时,它再次显示认占位符…帮助?

import Foundation
import UIKit

class messageNotesViewController: UIViewController,UITextViewDelegate {

@IBOutlet weak var messageNotes: UITextView!
@IBOutlet var swiped: UISwipeGestureRecognizer!

var placeholder = "Take your notes here (Swipe Down to dismiss the keyboard): "

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(true)

    messageNotes.delegate = self
    messageNotes.text = placeholder

}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
}

@IBACtion func openIn(_ sender: AnyObject) {

    print("Share with Social Media or Copy to Notes")
    //let textToShare = messageNotes.attributedText

       // let objectsToShare = [textToShare]
        //let activityVC = UIActivityViewController(activityItems: objectsToShare,applicationActivities: nil)


    //activityVC.popoverPresentationController?.sourceView = (sender as! UIView)
    //self.present(activityVC,animated: true,completion: nil)


    if let notes = messageNotes.text {
        let avc = UIActivityViewController.init(activityItems: [notes],applicationActivities: nil)

        avc.popoverPresentationController?.barButtonItem = sender as? UIBarButtonItem
        self.present(avc,animated: truE) {
            print("completed")
        }
    }
}

func touchesBegan(_ messageNotes: UITextField) -> Bool {
    self.view.endEdiTing(true)
    return false
}


//let defaults = NSUserDefaults.

override func viewWillDisappear(_ animated: Bool) {
    //PrepareForSegue didn't quite work
    print("View Will Disappear")

    //TesTing if the user has entered any text if so preserve entered text
    if messageNotes.text != placeholder {

        //viewDidLoad(typedText)
        print("the user altered the text in some way. \n")

        placeholder = messageNotes.text
        // assigns new placeholder
    }
    else{
        // do something else - if needed
    }
}
}

//Sub class decleration for ActivityForNotesViewController as called in openIn
class ActivityForNotesViewController: UIActivityViewController {

internal func _shouldExcludeActivityType(_ activity: UIActivity) -> Bool {
    let activityTypesToExclude = [
    ]

    if let actType = activity.activityType() {
        if activityTypesToExclude.contains(actTypE) {
            return true
        }
        else if super.excludedActivityTypes != nil {
            return super.excludedActivityTypes!.contains(actTypE)
        }
    }
    return false
}
}

尝试实现以下答案时存在一些编译错误.

在viewWillAppear函数中,编译器说“不能调用函数类型的值’UserDefaults’” – 如果让带有UserDefaults.standardUserDefaults()的newText行用红色下划线,编译器会突出显示该行.

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(true)

    messageNotes.delegate = self
    messageNotes.text = placeholder

    if let newText = UserDefaults.standardUserDefaults().objectForKey("textKey"){
        if newText.length > 0 {
            messageNotes.text = newText
        }
    }

}

在viewWillDisappear函数中找到相同的编译错误

override func viewWillDisappear(_ animated: Bool) {
    //Prepare for segue didn't quite work for what I need
    print("View Will Disappear")

    //TesTing if the user has entered any text if so preserve entered text
    if messageNotes.text != placeholder {

        //viewDidLoad(typedText)
        print("the user altered the text in some way. \n")

        UserDefaults.standardUserDefaults().setObject(messageNotes.text!,forKey:"textKey")

        // assigns new placeholder
    }
    else{
        // do something else - if needed
    }
}
}

解决方法

您需要在某处保存更改,我建议使用UserDefaults,这是保存用户首选项和其他小块数据的好方法.

我将在viewWillDisappear中替换它:

placeholder = messageNotes.text

UserDefaults.standardUserDefaults().set(messageNotes.text!,forKey:"textKey")

在viewWillAppear中我添加

messageNotes.text = placeholder
if let newText = UserDefaults.standardUserDefaults().object("textKey"){
    if newText.length > 0 {
        messageNotes.text = newText as! String
    }
}

大佬总结

以上是大佬教程为你收集整理的ios – 存储UITextView字符串/文本数据全部内容,希望文章能够帮你解决ios – 存储UITextView字符串/文本数据所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。