解決UITextField字?jǐn)?shù)限制和鍵盤遮蓋問(wèn)題

首先我們來(lái)說(shuō)一說(shuō)字?jǐn)?shù)限制的問(wèn)題
由于TextField的代理方法

  • (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string; // return NO to not change text
    當(dāng)輸入框內(nèi)容有變化時(shí),其不能完全捕捉到變化,所以我們做字?jǐn)?shù)限制時(shí),最好不要用此方法。我們可以通過(guò)給textfield添加事件的方法來(lái)限制其字?jǐn)?shù),
    [textfield addTarget:self action:@selector(textFieldValueChange:) forControlEvents:UIControlEventValueChanged];

其中textFieldValueChange是當(dāng)textfield內(nèi)容有變化時(shí)就會(huì)調(diào)用,下面我們開(kāi)始在此方法中限制字?jǐn)?shù)

-(void) textFieldValueChange:(UITextField *) textfield
{
//因?yàn)檩斎雰?nèi)容可能是漢字,所以要在沒(méi)有高亮的時(shí)候,來(lái)獲取當(dāng)前輸入框的內(nèi)容,再去限制字?jǐn)?shù),否則會(huì)有crash
    UITextRange *textRange = [textView markedTextRange];
    UITextPosition *position = [textView positionFromPosition:textRange.start offset:0];
    if (!position)
    {
        NSString *textStr = textView.text;
        if (textStr.length>500)
        {
            textfield.text = [textStr substringToIndex:500];
        }
    }
}

下面來(lái)討論鍵盤遮蓋問(wèn)題
這是我們常見(jiàn)到的狀況,所以不做解釋了,直接說(shuō)解決方法。
首先我們添加一個(gè)鍵盤的NSNotification

   [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyboardDidChangeFrame:) name:UIKeyboardWillChangeFrameNotification object:nil];

然后在接收通知的地方獲取鍵盤的y值變化,根據(jù)此y值來(lái)改變你需要改變的view

//解決鍵盤遮蓋問(wèn)題
-(void)keyboardDidChangeFrame:(NSNotification *)noti
{
    NSDictionary *userInfo = noti.userInfo;
    
    // 動(dòng)畫(huà)的持續(xù)時(shí)間
    double duration = [userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue];
    
    // 鍵盤的frame
    CGRect keyboardF = [userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];
    //鍵盤的Y值
    CGFloat keyboardY = keyboardF.origin.y;
    //根據(jù)鍵盤的Y值來(lái)改變你需要改變的View
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容