[英]detect where and what changes within textfield
如何在textfieldDidChange方法中檢查字符串的確切位置和更改位置?
let str1 = "Hello how are you @Marie, nice day uh?"
因此,想象一下我的用戶決定編輯文本和鏈接標記而不是marie
let str2 = "Hello how are you @ Markus, nice day uh?"
我需要一種方法來檢測文本字段中@ Markus的更改,但不更改字符串中的其他任何內容。 我能夠檢測到最后一個單詞,第一個單詞等等,但是重要的是還要查看文本中發生了什么變化
我正在考慮一種方法
a = "Hello how are you"
b = newly changed text field
c = ", nice day uh?"
let str3 = a + b + c // More or less
也許我得到了我正在編輯的索引,從該索引中取出單詞-從左空間到右空間-並刪除了它? 預先感謝,是的,我是初學者:P
如果將視圖控制器設置為文本字段的委托,則可以實現textField(_:shouldChangeCharactersIn:replacementString:)
委托方法。 這將告訴您用戶要求更改的字符范圍,並提供替換字符串。
您可以使用它來監視用戶的編輯。 但是,字符串很容易以難以跟蹤的方式進行更改。 如果用戶刪除“您好,您好”部分怎么辦? 如果他們將整個字符串替換為“關閉潰爛的滴@fred,您的惡臭變態”怎么辦?
您最好從文本字段中獲取整個字符串並進行解析。 您可以接受用戶輸入的任何內容,外觀和@ sign, and take everything after that until the next space as the name, eg
@ alphanumerics`。
或者,您可以設置屏幕,以便第一部分是標簽,中間部分是可編輯的文本字段,最后一部分是另一個標簽。 用戶唯一可以編輯的部分是中間部分,即名稱。 或者,您可以將其設置為3個單獨的文本字段,前綴,名稱和后綴。 告訴用戶您希望他們輸入每個部分的內容。
您可以使用此代碼拆分字符串。
對於Objectve c:
1.創建這樣的功能。
-(NSString *)checkString:(NSString *)splitString{
NSRange firstObj = [splitString rangeOfString:@"@"];
NSRange secondObject = [splitString rangeOfString:@","];
NSRange rangeSubStr = NSMakeRange(firstObj.location + firstObj.length, secondObject.location - firstObj.location - firstObj.length);
return [splitString substringWithRange:rangeSubStr];
}
2.像這樣使用此功能。
[self checkString:@"Hello how are you @Marie, nice day uh?"]
然后,每次更改文本后,您都可以檢查子字符串,並將其與原始子字符串進行比較。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.