2012-02-04 76 views
6

Tôi đã tìm kiếm các giải pháp và tìm thấy đoạn mã sau đây. Nhưng tôi không biết cách sử dụng nó, thật không may.Làm cách nào để giới hạn ký tự trong UITextView?

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)string { 
     NSUInteger newLength = [textField.text length] + [string length] - range.length; 
     return (newLength > 25) ? NO : YES; 
    } 

Chỉ cần cho mục đích thử nghiệm tôi thiết lập một IBACTION

-(IBAction)checkIfCorrectLength:(id)sender{ 
    [self textView:myTextView shouldChangeTextInRange: ?? replacementText: ?? ]; 

} 

để tôi vượt qua những gì cho shouldChangeTextInRangereplacementText? Hoặc tôi có hoàn toàn sai không?

+1

Đó là phương thức ủy quyền - đọc tài liệu về UITextView và các giao thức của nó. – Till

Trả lời

11

Gọi textView:shouldChangeTextInRange:replacementText: từ checkIfCorrectLength: không có ý nghĩa. Nếu bạn muốn kiểm tra độ dài từ nhiều phương pháp, yếu tố thử nghiệm ra phương pháp riêng của mình:

- (BOOL)isAcceptableTextLength:(NSUInteger)length { 
    return length <= 25; 
} 

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)string { 
    return [self isAcceptableTextLength:textField.text.length + string.length - range.length]; 
} 

-(IBAction)checkIfCorrectLength:(id)sender{ 
    if (![self isAcceptableTextLength:self.textField.text.length]) { 
     // do something to make text shorter 
    } 
} 
+0

cảm ơn đã làm việc cho tôi :) –

1

Bạn không gọi phương pháp này cho mình, quan điểm văn bản gọi nó là bất cứ khi nào nó về để thay đổi văn bản của nó. Chỉ cần đặt thuộc tính delegate của chế độ xem văn bản (ví dụ: cho bộ điều khiển chế độ xem của bạn) và triển khai phương thức ở đó.

2

Xin chào, tôi đã tìm và sửa đổi mã tại đây. Vì vậy, đối với người dùng xamarin. hãy thử như sau:

textView.ShouldChangeText += delegate 
{ 
    if(textView.Text.Length > 159) // limit to one sms length 
    { 
     return false; 
    } 

    return true; 
} 
0

Nếu đối tượng hiện tại là các đại biểu về quan điểm văn bản, sau đó bạn có thể sử dụng đoạn mã sau:

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text 
{ 
    return weightTextView.text.length + text.length - range.length < 7; 
} 

này đã làm việc cho tôi.

0
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text 
{ 
if([text length] == 0) 
{ 
    if([textView.text length] != 0) 
    { 
     return YES; 
    } 
    else { 
     return NO; 
    } 
} 
else if([[textView text] length] > your limit value) 
{ 
    return NO; 
} 
return YES; 

} 
Các vấn đề liên quan