日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Swift - 文本输入框内容改变时响应,并获取最新内容

發(fā)布時(shí)間:2025/3/17 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Swift - 文本输入框内容改变时响应,并获取最新内容 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1,問題描述 有時(shí)我們開發(fā)的時(shí)候需要先把“確認(rèn)”按鈕初始設(shè)置為不可用,當(dāng)文本框中輸入文字以后,再將輸入按鈕變?yōu)榭捎谩?
2,實(shí)現(xiàn)原理 (1)要檢測文本框內(nèi)容的變化,我們需要讓新界面的Controller遵循一個(gè)文本協(xié)議UITextFieldDelegate。 同時(shí)在viewDidLoad方法內(nèi)將文本框的代理設(shè)置為MainListController當(dāng)前實(shí)例。 然后實(shí)現(xiàn)textFile的shouldChangeCharactersInRange方法就能在文本框?qū)⒁兓臅r(shí)候執(zhí)行一些代碼。 (2)但這個(gè)只是將要變化時(shí)執(zhí)行,而不是變化后。比如在這個(gè)方法內(nèi)打印出文本框的內(nèi)容,會(huì)發(fā)現(xiàn)每當(dāng)我們改變文本框的內(nèi)容時(shí),打印出來的是上一次的內(nèi)容。 比如先輸入1,打印出來是空。再輸入2,文本框上是12,但打印出來卻是1. 要獲取最新內(nèi)容,則需要String的stringByReplacingCharactersInRange方法,但這個(gè)方法在Swift的String中又不支持。要解決這個(gè)問題,就要先替NSRange做個(gè)擴(kuò)展。
3,代碼如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 import UIKit class ViewController: UIViewController ,UITextFieldDelegate{ ????@IBOutlet weak var button: UIButton! ????@IBOutlet weak var textField: UITextField! ????? ????override func viewDidLoad() { ????????super.viewDidLoad() ????????// Do any additional setup after loading the view, typically from a nib. ????????? ????????textField.delegate = self ????} ????func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, ????????replacementString string: String) -> Bool { ????????let newText = textField.text ????????????.stringByReplacingCharactersInRange(range.toRange(textField.text), withString: string) ????????button.enabled = countElements(newText) > 0 ????????return true ????} ????? ????override func didReceiveMemoryWarning() { ????????super.didReceiveMemoryWarning() ????????// Dispose of any resources that can be recreated. ????} } //擴(kuò)展NSRange,讓swift的string能使用stringByReplacingCharactersInRange extension NSRange { ????func toRange(string: String) -> Range<String.Index> { ????????let startIndex = advance(string.startIndex, self.location) ????????let endIndex = advance(startIndex, self.length) ????????return startIndex..<endIndex ????} }

總結(jié)

以上是生活随笔為你收集整理的Swift - 文本输入框内容改变时响应,并获取最新内容的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。