1. 程式人生 > >UITextField的游標定位在任意位置及銀行卡號的輸入問題

UITextField的游標定位在任意位置及銀行卡號的輸入問題

self.inputTextField.delegate=self;

//調取數字鍵盤

self.inputTextField.keyboardType = UIKeyboardTypeNumberPad;

在textfield的delegate方法中:

#pragma mark ------TextFieldDelegate----------

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
//    NSLog(@"string=%@",string);
//    NSLog(@"range location=%ld,length=%ld",range.location,range.length);
   
    NSString *BeString;
    
    if ([string isEqualToString:@""]) { //刪除資料
        BOOL isKong=NO;//是否要刪除的是空格
        NSString *ss=[textField.text substringWithRange:NSMakeRange(range.location, 1)];
        if ([ss isEqualToString:@" "]) { //刪除空格
            
            isKong=YES;
            
            if (range.location==0) {//第一個字母是空格
                NSLog(@"textfied==%@",textField.text);
                return YES;
            }
            textField.text=[textField.text stringByReplacingCharactersInRange:NSMakeRange(range.location-1, 1) withString:@" "];
            BeString=textField.text;
        }else{
            BeString=[textField.text stringByReplacingCharactersInRange:NSMakeRange(range.location, 1) withString:@" "];
        }
        //對被刪除之後的資料去空格,重新加空格,末尾不要空格
        textField.text=[self getSpace4StringWith:BeString lastHaveSpace:NO];
        
        if (range.location>[textField.text length]) {
            textField.text=[textField.text stringByAppendingString:@" "];
        }else{
            textField.text=[NSString stringWithFormat:@"%@ %@",[textField.text substringToIndex:range.location],[textField.text substringFromIndex:range.location] ];
            if (isKong) {
                [textField setSelectedRange:NSMakeRange(range.location, 1)];
            }else{
                [textField setSelectedRange:NSMakeRange(range.location, 1)];
            }
        }
        NSLog(@"Bestring=%@",BeString);
        return YES;
    }else{
        BeString=[textField.text stringByReplacingCharactersInRange:range withString:@"s"];
    }
    if (BeString.length>23) { //只能輸入19位
        textField.text = [textField.text substringToIndex:23];
        return NO;
    }

//    NSLog(@"beString=%@",BeString);
    textField.text=[self getSpace4StringWith:BeString lastHaveSpace:YES];
    NSLog(@"tt=%@",textField.text);
    //得到字元“s”的位置,將它定為游標的位置
    NSRange sRange=[textField.text rangeOfString:@"s"];
    
    textField.selectedRange=sRange;
    return YES;
}
//得到4個字元之間以空格相間隔的字串,最後一串若是4個字元,那麼最後一位要不要空格,要則hasSpace=YES,不要則hasSpace=NO
-(NSString *)getSpace4StringWith:(NSString *)str lastHaveSpace:(BOOL)hasSpace
{
   NSString *BeString=[str stringByReplacingOccurrencesOfString:@" " withString:@""];
    
    NSString *
[email protected]
""; while (BeString.length>4) { NSString *little=[BeString substringToIndex:4]; finalStr=[finalStr stringByAppendingFormat:@"%@ ",little]; BeString=[BeString substringFromIndex:4]; } finalStr=[finalStr stringByAppendingString:BeString]; if (hasSpace) { if (BeString.length==4) { finalStr=[NSString stringWithFormat:@"%@ ",finalStr]; } } return finalStr; }



相關推薦

UITextField游標定位任意位置銀行卡輸入問題

self.inputTextField.delegate=self; //調取數字鍵盤 self.inputTextField.keyboardType = UIKeyboardTypeNumberPad; 在textfield的delegate方法中: #pragma mark ------TextFie

js根據銀行卡判斷屬於哪個銀行,並返回銀行縮寫銀行卡型別https://www.cnblogs.com/zhoubingyan/p/8334981.html

在做繫結銀行卡,輸入銀行卡的時候,產品有這麼一個需求,需要使用者輸入銀行卡號的時候,顯示對應的銀行卡名稱及簡稱。於是苦苦尋覓,終於找到了支付寶的開放API,銀行卡校驗介面 https://ccdcapi.alipay.com/validateAndCacheCardInfo.json?ca

根據銀行卡 獲取銀行名稱銀行logo

根據銀行卡號碼獲取銀行卡歸屬地資訊介面地址: https://ccdcapi.alipay.com/validateAndCacheCardInfo.json?_input_charset=utf-8&cardNo=銀行卡卡號&cardBinCheck=true 就是普通的get請求,然後

JavaScript 獲取輸入時的游標位置場景問題

前言 在輸入編輯的業務場景中,可能會需要在游標當前的位置或附近顯示提示選項。 比如社交評論中的@user功能,要確保提示的使用者列表總是出現在@字元右下方,又或者是在自定義編輯器中 autocomplete 語法提示,都需要獲取游標當前的位置作為參照點。 兩種

顯示scrollview時對滾動條進行任意位置定位

在android開發中很多時候會遇到一屏顯示不下所有內容的現象,那大家也知道這個時候肯定會想到用scrollview來進行滾屏顯示。 這個時候由於某些需求,會要求在最開始顯示scrollview的時候就定位到某一處,這篇博文就是來講這個的哈~ 首先,scrollView.s

Excel中關於銀行卡的應用即每隔4位加個空格刪除空格

在本文將為大家分享一個關於銀行卡號的應用,如銀行卡號為3303271988090725,接下來我們要做的就是每隔4位加個空格。我們很容易想到的就是用mid來擷取位數,還有連線函式加上空格。同樣去掉這每隔4個位置的空格我們會想到substitute文字函式,有了思路就差實現了

UITextField 游標位置獲取和設定

今天做一個自定義數字鍵盤的控制元件,有需要獲取到游標位置,所以在網上找到了一段程式碼,主要是獲取游標的位置和設定游標的位置,貼出來。 /** * 游標選擇的範圍 * * @return 獲取游標選擇的範圍 */ - (NSRange)selecte

[轉]銀行卡位數

content gin add 建行 detail 借記卡 body mage 微信支付 本文內容來自:http://kf.qq.com/faq/140225MveaUz150819mYFjuE.html 微信商戶常用銀行賬號長度參考表 微信支付支持的銀行賬號長度,如下表

JS校驗銀行卡輸入時放大效果

比較 left for 取出 abs focusout htm length rep 一、(校驗格式) function CheckBankNo(t_bankno) {   var bankno = $.trim(t_bankno);   if(bankno == ""

任意位置為stringbuffer 添加內容

print 插入 fse logs 序列 n) 字符串 set pac package tianjia.cn; /* * 在任意位置 添加內容 * api方法: * StringBuffer insert(int offset, boolean b)

wndr4300刷任意系統刷回官方原廠系統

ftp 方法 升級 png 但是 更新 -o 都是 mount 4300是目前性價比比較高的可玩路由器了,如果要買的話要買v1版本的,目前賣的都是v2,v2刷不了第三方系統。 註意:如果帶寬低於50M,可以隨便刷第三方系統玩,如果高於50M的帶寬或者想組建千兆局域網,就不要

jquery 點擊彈出層自身以外的任意位置,關閉彈出層

top stop 關閉 click spl bsp *** doc mask <!--彈出層---> <div class="mask"> <div class="wrap"></div> </div>

Android 在Android手機上獲取其他應用的包名版本

string android手機 app名 fin 產品 logo 信息 led 直接 獲取Android手機上其他應用的包名及版本號方法有很多,可以通過AAPT從APK包中直接獲取,也可以通過代碼在手機上獲取。顯然,對於產品或者用戶來說要獲取這些信息,在手機上獲取更為簡便

動態創建table,按回車鍵自動切換光標位置金額統計Js代碼實現

tex move break mov sel 自動 false click ipp 1.JS頁面輸出拼接的Table代碼,參數來自於Ajax請求響應回來的Json數據 $("#rightTipPayBackTb").append("<tr><td>

java檢驗銀行卡

string 數字 urn 獲得 har eba 過程 class int /* 校驗過程: 1、從卡號最後一位數字開始,逆向將奇數位(1、3、5等等)相加。 2、從卡號最後一位數字開始,逆向將偶數位數字,先乘以2(如果乘積為兩位數,將個

JS input 銀行卡格式轉換

news tel lang doctype onkeydown htm files head nbsp 傳送門:http://demo.sc.chinaz.com//Files/DownLoad/webjs1/201411/jiaoben2920/ <!DOCT

通過銀行卡識別歸屬銀行,php方式

無錫 turn 備註 += 數據 德陽 美國 普通 雪蓮 這個例子不是很全,要做到齊全必須使用數據庫字典來索引,而且數據量龐大,建議生產使用時限制幾大行就行,直接不支持其他小行。此案例拋磚引玉 /** * 銀行卡信息識別相關類 * 把bin號轉化為長整形,再把各個銀行

隱藏部分號碼為星號,過濾銀行卡、手機號

urn div fun -s obj setattr car ace function 效果展示: 直接上代碼: <!DOCTYPE html> <html lang="en"> <head> <meta chars

三、mysql登錄詳解版本查詢

ppa l數據庫 server gpo 方法 win sql查詢 spa nbsp 1.用window+r,輸入cmd,用mysql -uuser -ppassword登錄時出現‘mysql’不是有效的內部命令? 答:這是因為沒有配置My

iOS 【UIKit-UIPageControl利用delegate定位圓點位置 之 四舍五入小技巧】

優化 距離 scroll current control 水平 技術 觸發 src 在UIScrollView中會加入UIPageControl作為頁碼標識,能夠讓用戶清楚的知道當前的頁數。我們須要優化的一點是讓pageControl