看到這個錯的時候 一般就是iOS系統(tǒng)不兼容的原因
我現(xiàn)在基本沒有考慮iOS7的兼容,但有時候又偏偏有iOS7的機子,很無奈又要做適配
我最初寫的代碼是這樣的:
if ([self.UserNameTF.text containsString:@"*"])
{
GFBLog(@"還有*號 不轉換");
}
else
{
if ([self.UserNameTF.text containsString:@"*"] && [UITextField numberToNormalNumTextField:UserNameTF].length == 11)
{
GFBLog(@"還有*號 不轉換");
}
else
{
self.userNumber = [UITextField numberToNormalNumTextField:self.UserNameTF];
}
}
iOS7的機子上運行直接奔潰了:找了一會沒有發(fā)現(xiàn)什么問題,起初我以為是 UITextField的代理方法有問題,我一個個代理方法注釋了 最后發(fā)現(xiàn)問題所在。
重點就是 containsString 你看API的時候就會發(fā)現(xiàn) 這個方法是iOS8出來的,找到問題所在 就好解決了。
解決方法就是找一個iOS7使用的方法替換iOS8的這個 containsString 方法
解決方法:
NSRange range = [self.UserNameTF.text rangeOfString:@"*"];
if(range.location != NSNotFound)
{
// 存在
GFBLog(@"還有*號 不轉換");
}
else
{
// 不存在
NSRange range1 = [self.UserNameTF.text rangeOfString:@"*"];
if (range1.location != NSNotFound && [UITextField numberToNormalNumTextField:UserNameTF].length == 11)
{
// 存在
GFBLog(@"還有*號 不轉換");
}
else
{
// 不存在
self.userNumber = [UITextField numberToNormalNumTextField:self.UserNameTF];
}
}
就解決了····