簡體   English   中英

檢測文本字段中的位置和變化

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM