Вставьте дату / время в UITextView, когда пользователь нажимает возврат - PullRequest
3 голосов
/ 15 августа 2010

Я пытаюсь вставить текущую дату / время всякий раз, когда пользователь нажимает клавишу возврата или начинает вводить UITextView в XCode, но не совсем уверен, с чего начать.

Я знаю, что этот метод предназначен для нажатия наTextView, но, похоже, не работает:

- (void)textViewDidBeginEditing:(UITextView *)textView {
    self.txtDetail.text = [self.txtDetail.text stringByAppendingString:@"Hello!"];
}

Спасибо

Обновление:

DetailViewController.h 
@interface DetailViewController : UIViewController <UIPopoverControllerDelegate, UISplitViewControllerDelegate> { 
    UITextView *txtDetail;
 } 
@property (nonatomic, retain) IBOutlet UITextView *txtDetail;

 - (void)textViewDidBeginEditing:(UITextView *)textView;

DetailViewController.m 
@synthesize txtDetail;

 - (void)textViewDidBeginEditing:(UITextView *)textView { 
    NSLog(@"Hello");
    self.txtDetail.text = [self.txtDetail.text stringByAppendingString:@"Hello!"];
}

Обновление 02:

Я добавилэто к моим файлам .m:

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {  

    BOOL shouldChangeText = YES;  

    if ([text isEqualToString:@"\n"]) {  
        // Find the next entry field  

        txtDetail.text = [txtDetail.text stringByAppendingString:@"\nhey\n"];       }  
        textView.editable = YES;

        shouldChangeText = NO; 
    [textView becomeFirstResponder];

    return shouldChangeText;  
}

Я получаю желаемый эффект (Эй, добавляется всякий раз, когда я нажимаю клавишу возврата на клавиатуре), но теперь я не могу ничего печатать ... какие-либо идеи?

Ответы [ 3 ]

0 голосов
/ 26 августа 2010

Замените ваш метод на следующий метод

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text 
{   

   BOOL shouldChangeText = YES;   

   if ([text isEqualToString:@"\n"] && textView == detailText) 
   {   
     // Find the next entry field   

       txtDetail.text = [txtDetail.text stringByAppendingString:@"\nhey\n"];          
       textView.editable = YES; 

       shouldChangeText = NO;  
       [textView becomeFirstResponder]; 
   } 
   return shouldChangeText;   
} 
0 голосов
/ 18 сентября 2010

Механизм вызовов делегатов является очень важной частью программирования под iOS.Об этом есть документация в библиотеках Apple, и это также обсуждается во многих хороших книгах.Книга Apress «Начало программирования на iPhone» очень хороша и описывает методы делегатов.

0 голосов
/ 15 августа 2010

Вы должны объявить свой контроллер как реализующий протокол UITextViewDelegate, а затем подключить его как делегат текстового представления. В противном случае он никогда не получает сообщения делегата вообще.

Тогда вам нужно реализовать:

– textView:shouldChangeTextInRange:replacementText:

... чтобы вернуть YES / TRUE, иначе текст не будет добавлен.

Update02:

Вам необходимо реализовать все методы протокола UITextViewDelegate, которые имеют возврат. Если вы этого не сделаете, текстовое представление по умолчанию принимает НЕТ.

См .: Руководство по текстовому и веб-программированию: Управление текстовыми полями и текстовыми представлениями

Вам также необходимо понять шаблон делегата .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...