簡體   English   中英

向UITextField添加永久字符

[英]Add a permanent Character to UITextField

有沒有一種方法可以將字母永久添加到用戶無法刪除的UITextField中? 我想添加一個字符,用戶無法刪除它,但是他們仍然可以在其后添加字母。

干杯,

ps這是針對iOS

UITextField有一個委托方法,該方法應該更改范圍內的字符,該方法基本上是問,我應該添加還是刪除下一個字符? 然后您可以決定自己想要什么。 這是一些示例代碼。

 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

    BOOL shouldChangeCharacters = ( (textField.text.length + string.length) > 1 ); 
    return shouldChangeCharacters;

}

該代碼意味着如果添加的新字符加上當前文本大於1,則可以進行更改;如果文本不大於1,則我們將不進行更改...

現在,假設有人可能會嘗試在您的角色上粘貼內容,則仍會調用此委托方法,但您需要做一些事情。

if (range.location == 0) {
    NSString* firstCharacter = [string substringToIndex:1];
    BOOL firstCharacterIsDesiredCharacter = [firstCharacter isEqualToString:@"#"];
    if ( !firstCharacterIsDesiredCharacter ) {
        NSString* symbolWithText = [NSString stringWithFormat:@"#%@",text];

        //  ******************** \\

        [textView setText:symbolWithText];
        return NO;

        // or we could do this

        string = symbolWithText;

        //  ******************** \\

    }

}

兩種情況都在修改參數的值...有些人不喜歡這樣做。 這可能是不好的編程習慣。.或者,如果要修改它們,則應首先執行一些過程。

這樣,我們只需要在他們嘗試替換第一個字符時運行此代碼,即替換了哈希標簽符號,第一個字符就位於位置0和長度1的范圍內。因此,如果范圍等於0 ,然后我們運行代碼對其進行修復。 此代碼還考慮到他們可能會在其中粘貼特殊符號。 因此,如果UITextField讀取#work,並且他們嘗試復制“ work”或“ #work”,則它將兩種情況都考慮在內,並且如果哈希標記是第一個字符,則完全跳過該代碼。

UITextField參考

嘗試這個

   UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 40, 40)];
   label.text = @"left";
   label.backgroundColor = [UIColor colorWithWhite:0.0 alpha:0.0];
   textField.leftViewMode = UITextFieldViewModeAlways;
   textField.leftView = label;

嘗試使用此:

在您的.h中:

IBOutlet UITextFeild *textFeild;

在您的.m中:

- (BOOL)textFieldShouldReturn:(UITextField *)textFeild {

NSString *textFeildText = textFeild.text;
textFeild.text = [NSString stringWithFormat:@"string you want to always add %@",textFeildText];

return NO;

}

當用戶編輯文本框時,它不會總是顯示出來,但是一旦他們按下回車鍵,它將被自動添加到文本框中。 如果使用此代碼,則建議您默認情況下在文本字段中沒有所需的字符串,否則可能會得到如下所示的結果:

String you want to add String you want to add Hello World!

如果您只使用我給您的代碼,並且不希望將要始終保留的字符串默認放置在字段中,那么您就可以開始使用了! 如果要使鍵盤在點擊回車鍵后自動消失,只需將其添加到“ return NO”語句上方的textFeildShouldReturn方法中:

[textFeild resignFirstResponder];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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