網頁

2013年6月2日 星期日

iOS開發筆記 - 限制UITextView的行數

UITextView有個貼心處,有scroll view,可以不限字數的一直填字,但有時就是希望只有可視範圍的大小,將scroll的功能disable後還是不夠,這時只能依靠UITextViewDelegate中的兩個function,來做到限定的功能,我在此的需求如下:

字數及游標只能在UITextView bound的範圍內

字數可以藉由底下的shouldChangeTextInRange來處理,若超過剛填入的字就去除,但若要讓游標到最後一行就停住,就得由textViewDidChange來控制,兩個的內容都一樣,但作用的點不同。

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
    //防止使用者輸入字數超過輸入區
    if (textView.contentSize.height > textView.frame.size.height + 10) {
        textView.text = [textView.text substringToIndex:[textView.text length]-1];
        return NO;
    }
 
    return YES;
}

- (void)textViewDidChange:(UITextView *)textView
{
    //防止Enter鍵會讓游標下移超過輸入區
    if (textView.contentSize.height > textView.frame.size.height + 10) {
        textView.text = [textView.text substringToIndex:[textView.text length]-1];
        //        textView.contentSize = textView.frame.size;
    }
}


參考網址:
UITextView 限制行数解决方案
如何实现对UITextField ,UITextView等输入框的 字数限制

沒有留言:

張貼留言