Swift   发布时间:2022-03-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Swift - 文本输入框内容改变时响应,并获取最新内容大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

1,问题描述 有时我们开发的时候需要先把“确认”按钮初始设置为不可用,当文本框中输入文字以后,再将输入按钮变为可用。 2,实现原理 (1)要检测文本框内容的变化,我们需要让新界面的Controller遵循一个文本协议  UITextFieldDelegate。 同时在  viewDidLoad 方法内将文本框的代理设置为当前实例。 然后实现  TEXTFile 的  shouldChangeCha
1,问题描述
有时我们开发的时候需要先把“确认”按钮初始设置为不可用,当文本框中输入文字以后,再将输入按钮变为可用。

2,实现原理
(1)要检测文本框内容的变化,我们需要让新界面的Controller遵循一个文本协议 UITextFieldDelegate
同时在 viewDidLoad方法内将文本框的代理设置为当前实例。
然后实现 textFileshouldChangeCharactersInRange方法就能在文本框将要变化的时候执行一些代码

(2)但这个只是将要变化时执行,而不是变化后。比如在这方法内打印出文本框的内容,会发现每当我们改变文本框的内容时,打印出来的是上一次的内容
比如先输入1,打印出来是空。再输入2,文本框上是12,但打印出来却是1.
获取最新内容,则需要String的 StringByreplacingCharactersInRange方法,但这个方法在Swift的String中又不支持。要解决这个问题,就要先替 NSRange做个扩展。

3,代码如下
@H_403_61@
import UIKit
class ViewController : UIViewController , UITextFieldDelegate {
@H_618_129@
@H_262_135@ @IBOutlet weak var button: UIButton !
textField: UITextField !
override func viewDidLoad() {
super .viewDidLoad()
textField.delegate = self
}
textField(textField: NSRange replacementString String: String ) -> Bool {
let newText = textField.text!.StringByreplacingCharactersInRange(
range.toRange(textField.text!),withString: String)
button.enabled = newText.characters.count > 0
return true
}
didReceiveMemoryWarning() {
.didReceiveMemoryWarning()
}
}
//扩展NSRange,让swift的String能使用StringByreplacingCharactersInRange
extension {
toRange(String: Range < . Index > {
starTindex = String.starTindex.advancedBy( self .LOCATIOn)
endIndex = starTindex.advancedBy( .length)
starTindex..<endIndex
}
}


1.将String转化为NSString截取,代码如下:

var s="1234567890"

var ns1=(s as NSString).subStringFromIndex(5)
var ns2=(s NSString).subStringToIndex(4)

var ns3=(s NSString).subStringWithRange(NsmakeRange(4,1))

println(ns1)//67890
println(ns2)//1234
println(ns3)//5

2.直接调用String的对应方法(推荐使用该方法),由于String对应的方法参数是String.Index类型而非Int类型,所以我们首先要创建String.Index类型参数值,204)">// var s="1234567890" // let index = advance(s.starTindex,5) swift 1.x //let index2 = advance(s.endIndex,-6); swift 1.x let index = s.starTindex.advancedBy(5) //swift 2.0+ let index2 = s.endIndex.advancedBy(-6) var range = Range<String.Index>(start: index2,end: indeX) var s1:String=s.subStringFromIndex(indeX) var s2:String=s.subStringToIndex(index2) var s3=s.subStringWithRange(rangE) print(s1)print(s2)print(s3)//5 // 扩展String extension String { subscript (r: Int>) -> String { get { let starTindex = self.starTindex.advancedBy(r.starTindeX) let endIndex = self.starTindex.advancedBy(r.endIndeX) return self[Range(start: starTindex,end: endIndeX)] } } } var s4 = s[2...4] print(s4);//345

通过String定义可以看出属性Index是个结构体,具体代码如下:

String : CollectionType {
    struct Index : BidirectionalIndexType,Comparable,153)">Reflectable {
        func successor() -> Index
        func predecessor() -> func getMirror() -> @H_632_505@mirrorType
    }
    var starTindex: Index { get }
    var endIndex: subscript (i: Index) -> Character { get }
    func generate() -> IndexingGenerator<String>
}

大佬总结

以上是大佬教程为你收集整理的Swift - 文本输入框内容改变时响应,并获取最新内容全部内容,希望文章能够帮你解决Swift - 文本输入框内容改变时响应,并获取最新内容所遇到的程序开发问题。

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

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