2012-04-12 2 views
3

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

enter image description here

.h

@interface CustomerNotesController : UITableViewController <UITextViewDelegate> 
{ 
    UIToolbar *noteToolbar; 
    IBOutlet UITextView *note; 
    id delegate; 
} 

@property (nonatomic, strong) IBOutlet UITextView *note; 
@property (nonatomic, retain) id delegate; 
@property (nonatomic, retain) UIToolbar *noteToolbar; 

.m

@synthesize note, noteToolbar, delegate; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    [note setDelegate:self]; 
    [note becomeFirstResponder]; 
} 

- (void)textViewDidBeginEditing:(UITextView *)textView 
{ 
    NSLog(@"EDITING"); 
    if (noteToolbar == nil) { 
     NSLog(@"Creating toolbar"); 

     noteToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0.0, 0.0, self.view.bounds.size.width, 44.0)]; 
     noteToolbar.barStyle = UIBarStyleBlackTranslucent; 

     UIBarButtonItem *cancelButton = [[UIBarButtonItem alloc] initWithTitle:@"Cancel" style:UIBarButtonItemStyleBordered target:self action:@selector(cancelNote:)]; 

     UIBarButtonItem *clearButton = [[UIBarButtonItem alloc] initWithTitle:@"Clear" style:UIBarButtonItemStyleBordered target:self action:@selector(clearNote:)]; 

     UIBarButtonItem *extraSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; 

     UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSave target:self action:@selector(saveNote:)]; 

     noteToolbar.items = [NSArray arrayWithObjects:cancelButton, clearButton, extraSpace, doneButton, nil]; 
     NSLog(@"Items: %@", noteToolbar.items); 
    } 

    NSLog(@"Current field: %@",textView); 
    NSLog(@"keyboard: %@", noteToolbar); 
    textView.inputAccessoryView = noteToolbar; 
} 

ЖУРНАЛОВ

2012-04-11 17:31:00.148 MyApp[28892:fb03] EDITING 
2012-04-11 17:31:00.148 MyApp[28892:fb03] Creating toolbar 
2012-04-11 17:31:00.149 MyApp[28892:fb03] Items: (
    "<UIBarButtonItem: 0x10dc3420>", 
    "<UIBarButtonItem: 0x10dc3480>", 
    "<UIBarButtonItem: 0x10dc34e0>", 
    "<UIBarButtonItem: 0x10dc3540>" 
) 
2012-04-11 17:31:00.149 MyApp[28892:fb03] Current field: <UITextView: 0x10d94f40; frame = (5 5; 310 140); text = 'This is sample text'; clipsToBounds = YES; autoresize = W+H; layer = <CALayer: 0x10d95170>; contentOffset: {0, 0}> 
2012-04-11 17:31:00.150 MyApp[28892:fb03] keyboard: <UIToolbar: 0x10dc2820; frame = (0 0; 320 44); opaque = NO; layer = <CALayer: 0x10dc2730>> 
+1

Попробуйте установить их в методе 'viewDidLoad' – Legolas

+0

@Legolas Я попробовал несколько мест размещения этого кода. Я сделал вид загружен, keyboardWillAppear, и textViewDidBeginEditing и textViewShouldBeginEditing. – Bot

+0

@QwertyBob Вы, ребята, не понимаете вопроса ... Это можно сделать так, как я работал раньше в других приложениях. Панель инструментов расположена над клавиатурой так же, как Apple делает это на своих клавиатурах. – Bot

ответ

3

Попробуйте установить их в методе viewDidLoad!

+0

Чтобы уточнить для кого-либо еще эту проблему. Вероятно, причина, по которой это не сработало для меня раньше, когда я положил ее в представление, загрузился, что у меня, вероятно, не было набора 'textview.delegate = self;'. Infact он, возможно, был прокомментирован. – Bot

0

Вы не можете это сделать. Клавиатура представляет собой управляемый системой UIView, который нельзя напрямую контролировать. ОС будет класть представление клавиатуры поверх всех других представлений, чтобы обеспечить правильную фокусировку для сбора пользовательского ввода.

Можете ли вы предоставить больше информации о том, почему вы хотели бы это сделать? даже если вы выяснили способ заставить себя вести себя так, как вы описали, Apple почти наверняка отвергнет нарушение Руководства по человеческому интерфейсу.

+0

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

+0

Я думаю, вы, ребята, должны использовать метод пользователя, который я разместил выше. –

3

// использовать этот метод

-(BOOL)textViewShouldBeginEditing:(UITextView *)textView{ 

    textView.inputAccessoryView = yourToolBar; 

    return YES; 
} 
Смежные вопросы