2017-04-03 129 views

回答

3

您可以使用正則表達式的,例如下面的正則表達式,只允許小符號

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { 
    if string.isEmpty { 
     return true 
    } 
    let regex = "[a-z]{1,}" 
    return NSPredicate(format: "SELF MATCHES %@", regex).evaluate(with: string) 
} 
+0

讓我仔細檢查。 –

1

限制大寫字母,數字&特殊符號,返回false除文本視圖中的小寫字母委託方法textField:shouldChangeCharactersInRange:

雨燕3.0:

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { 
     var myCharSet = CharacterSet(charactersInString: "abcdefghijklmnopqrstuvwxyz") 
     for i in 0..<(string.characters.count ?? 0) { 
      var c: unichar = string[i] 
      if !myCharSet.characterIsMember(c) { 
       return false 
      } 
     } 
     return true 
    } 
+0

我的問題是隻有小字母的字母在文本域中被接受 –

+0

Swift代碼不是objective-c檢查我的標籤。 –

+0

看看我的答案。 – Aakash

1

檢查此更新的代碼:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ 
    NSLog(@"textField:shouldChangeCharactersInRange:replacementString:"); 
     NSCharacterSet *myCharSet = [NSCharacterSet characterSetWithCharactersInString:@"abcdefghijklmnopqrstuvwxyz"]; 
     for (int i = 0; i < [string length]; i++) 
     { 
      unichar c = [string characterAtIndex:i]; 
      if (![myCharSet characterIsMember:c]) 
      { 
       return NO; 
      } 
     } 

     return YES; 
    } 

} 

斯威夫特

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool { 

     let set = NSCharacterSet(charactersInString: "abcdefghijklmnopqrstuvwxyz").invertedSet 
     return string.rangeOfCharacterFromSet(set) == nil 

    }    
+0

如果他了解邏輯,他可以很容易地將它轉換爲@NiravD。 –

+0

我只是建議你編輯你的答案,休息取決於你。 –

+0

你...我正在幫他解決這個問題......:D多數民衆贊成它..冷@NiravD –

1

嘗試下面的代碼只是自動獲得小寫字母這一點。

import UIKit 

class ViewController: UIViewController { 
    @IBOutlet weak var textEntry: UITextField! 

    //MARK : - Life Cycle 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     textEntry.addTarget(self, action: #selector(self.textFieldDidChange), for: .editingChanged) 
    } 

    //MARK: - Lower letter function 
    func textFieldDidChange(sender: UITextField) { 
     sender.text = sender.text?.lowercased() 
     print(textEntry.text ?? "") //Check your text output here 
    } 
} 
+0

讓我仔細檢查。 –

+0

首先檢查一下,它肯定會起作用。 @SakirSherasiya –

+0

它將大寫字母轉換爲小寫,我不想要它。 –

1

您可以使用此也

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { 

    // Return false when user tries to delete but textField is empty 
    let currentCharacterCount = textField.text?.characters.count ?? 0 
    if (range.length + range.location > currentCharacterCount) { 
     return false 
    } 

    // Return true when user tries to delete but textField is not empty 
    if string == "" { 
     return true 
    } 

    let userEnteredString = textField.text ?? "" 
    let newString = (userEnteredString as NSString).replacingCharacters(in: range, with: string) as NSString 

    return ((newString as String).range(of: "^[a-z]+$", options: .regularExpression) != nil) 

} 
+0

讓我仔細檢查。 –

相關問題