2017-06-30 4 views
0

ont essayé [[self jotNotes] resignFirstResponder];, ont essayé [self endEditing:YES];Les vues personnalisées ne suppriment pas les claviers?

J'ai mon NoteViewController, qui hérite UIViewController, et tente de mettre en œuvre le délégué comme si

@interface NOTEController : UIViewController <UITextViewDelegate> 
@end 

@implementation NOTEController 
-(id)init { 
    self = [super init]; 
    if (self) { 
    // self.delegate = self; //doesnt let me set this, so i assume i do not do that here 
     NOTEControllerView * mainView = [[NOTEControllerView alloc] initWithFrame:[UIScreen mainScreen].bounds]; 
     self.view = mainView; //just a plain custom uiview subclass its boring and not special 
    } 
    return self; 
} 
@end 

puis dans le MainView, j'ai un tas de sous -les vues qui sont fondamentalement un carré avec un UITextView à l'intérieur. La classe des carrés est comme ceci, et ce sont ceux qui essaient de fermer le clavier, les méthodes où je place le délégué, la méthode rejectKB et le code UITextView. Actuellement, il enregistrera ma méthode de clavier en appuyant sur le bouton terminé, mais le clavier est toujours présent. Apprécierais vraiment si quelqu'un pouvait me aider à comprendre pourquoi

@interface NOTESubview : UIView <UITextFieldDelegate> 
@property (nonatomic, weak) id<UITextFieldDelegate> delegate; 
-(UITextView *)jotNotes; 
@end 

@implementation NOTESubview 
-(id)initWithFrame:(CGRect)arg1 { 
    self = [super initWithFrame:arg1]; 
    if (self) { 
     self.delegate = self; 
     [self addSubview:[self jotNotes]]; 
    } 
    return self; 
} 
-(UITextView *)jotNotes { 
    UITextView * jotNotes = [[UITextView alloc] initWithFrame:CGRectMake(0, self.frame.size.height/5.7, self.frame.size.width, self.frame.size.height - self.frame.size.height/5.7)]; 
    UIToolbar* keyboardTextViewBar = [[UIToolbar alloc] init]; 
    keyboardTextViewBar.barStyle = UIBarStyleDefault; 
    [keyboardTextViewBar sizeToFit]; 
    UIBarButtonItem *flexSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil]; 
    UIBarButtonItem* doneButton = [[UIBarButtonItem alloc] initWithTitle:@"Done" 
        style:UIBarButtonItemStylePlain target:self 
        action:@selector(dismissKB:)]; 
    [keyboardTextViewBar setItems:[NSArray arrayWithObjects:flexSpace, doneButton, nil]]; 
    jotNotes.inputAccessoryView = keyboardTextViewBar; 
    jotNotes.delegate = self.delegate; 
    return jotNotes; 
} 
-(void)dismissKB:(UIBarButtonItem *)sender { 
    //this will log, so im not sure why it wont resign the board no matter what i try 
    NSLog(@"keyboard attempted to dismiss by %@", sender); 
    [[self jotNotes] resignFirstResponder]; 
} 

Répondre

0

Je soupçonne que lorsque la méthode dismissKB est appelée, en fait son pas celui qui est actuellement le premier intervenant.

Cependant, il y a un truc où vous pouvez simplement "rejeter le clavier" de n'importe où dans votre application. Vous voudrez peut-être faire un essai:

[[[[UIApplication sharedApplication] delegate] window] endEditing:YES]; 
0

Ajoutez la ligne suivante où vous essayez de masquer le clavier:

[self endEditing:YES];