У меня есть делегат UITextview - (BOOL)textView:(UITextView *)textView
, который никогда не звонит, и я боролся с этим в течение нескольких дней безрезультатно. Вот что у меня естьUITextView делегат никогда не назывался
Я объявил <UITextViewDelegate>
в моем файле заголовка и в ViewDidLoad я устанавливаю делегат, я попытался self.myTextView.delegate = self;
и myTextView.delegate = self;
вместе с проводкой до делегата в файле NIB вместо того, чтобы объявить его программно.
У меня есть несколько пользовательских кнопок, которые вставляют текст в моем UITextView 2 различными способами, в зависимости от кнопки, первый способ здесь ...
-(IBAction)string1:(id)sender {
NSRange range = myTextView.selectedRange;
NSString * firstHalfString = [myTextView.text substringToIndex:range.location];
NSString * secondHalfString = [myTextView.text substringFromIndex: range.location];
myTextView.scrollEnabled = NO;
NSString * insertingString = [NSString stringWithFormat:@"insert my text string"];
myTextView.text = [NSString stringWithFormat: @"%@%@%@",
firstHalfString,
insertingString,
secondHalfString];
range.location += [insertingString length];
myTextView.selectedRange = range;
myTextView.scrollEnabled = YES;}
и второй метод ...
-(IBAction)string2:(id)sender {
myTextView.text = [myTextView.text stringByAppendingString:@"my other string value"];}
С NSLog включен, я могу видеть, что
- (void)textViewDidChange:(UITextView *)textView{
NSLog(@"something changed");}
действительно дозвонились, но это д elegate никогда не вызывается
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
NSUInteger newLength = (textView.text.length - range.length) + text.length;
if(newLength <= MAX_LENGTH)
{
return YES;
} else {
NSUInteger emptySpace = MAX_LENGTH - (textView.text.length - range.length);
textView.text = [[[textView.text substringToIndex:range.location]
stringByAppendingString:[text substringToIndex:emptySpace]]
stringByAppendingString:[textView.text substringFromIndex:(range.location + range.length)]];
return NO;
}
NSLog(@"something else changed");}
В верхней части моего файла .M я определил #define MAX_LENGTH 100
Любая помощь будет очень ценится, моя общая цель состоит в том, чтобы ограничить количество чартеров в UITextView.
Прежде всего вы не увидите 'NSLog (@« что-то еще изменилось »);' потому что '' '' '' '' '' '' '' '' '' '' 'прежде чем они туда попадут. :-) –
Да, я знаю, что у меня была регистрация до возвращения, но все равно не повезло. – Dan