7
votes

iOS - Uitoolbar comme INPUTAccessoryView for UitextView

J'ai ajouté un uitoolbar code> avec un uibarbuttonitem code> comme entréeAccessoryView pour un uitextview code>. Cela fonctionne bien, mais l'Uibarbuttonitem est touchable à l'extérieur de son cadre, peut-être 50 pixels à l'extérieur à droite. Ce n'est pas grave mais ça m'énerve. Quelqu'un sache pourquoi?

Ceci est mon code (ARC): P>

UIToolbar *toolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, self.view.bounds.size.height, 320, 44)];
toolBar.barStyle = UIBarStyleBlack;
toolBar.translucent = YES;

UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneWriting:)];
[toolBar setItems:[NSArray arrayWithObjects:doneButton, nil]];

self.messageTextView.inputAccessoryView = toolBar;


0 commentaires

3 Réponses :


2
votes

La barre d'outils semble étendre la zone active des boutons au-delà de leurs limites s'il n'y a pas d'autres autres boutons à proximité de la barre d'outils. Les ingénieurs Apple doivent penser qu'il est préférable d'essayer de deviner où l'utilisateur avait l'intention d'appuyer plutôt que de ne pas réagir du tout.


1 commentaires

Si tel est le cas, pour moi, cela ressemble plus à la programmation «bâclée» ayant le bouton réagir en dehors de ses limites, eh bien.



7
votes

Dans iOS 6, il semble se comporter comme prévu. Beau conseil: Si vous souhaitez que le bouton apparaisse à droite au lieu de la gauche, utilisez l'un d'entre eux: xxx

initialise la barre d'outils avec: xxx


0 commentaires

2
votes

J'espère que cela vous aide ...

UIToolbar* keyboardDoneButtonView = [[UIToolbar alloc] init];
[keyboardDoneButtonView sizeToFit];

UIBarButtonItem* PrevButton = [[UIBarButtonItem alloc]  initWithBarButtonSystemItem:105 target:nil  action:nil]; //<
UIBarButtonItem*  NextButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:106  target:nil action:nil]; //>
UIBarButtonItem* doneButton = [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStyleBordered target:self action:@selector(doneClicked:)];

UIBarButtonItem* flexSpace = [[UIBarButtonItem alloc]  initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
UIBarButtonItem *fake = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil] ;

[keyboardDoneButtonView setItems:[NSArray arrayWithObjects: PrevButton,fake, NextButton,fake,flexSpace,fake,doneButton,nil] animated:YES];


1 commentaires

Solution très intéressante, celle-ci a travaillé pour moi, merci.