Domanda

Sto usando swrevealviewcontroller nella mia app e sto avendo un problema.Ho un campo di testo in una scena, se swipo a sinistra quando la tastiera è aperta, il menu appare ma non ha chiuso la tastiera.Come posso licenziare la tastiera sul colpo sinistro?

Ho provato

UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(dismissKeyboard)];
swipe.direction = UISwipeGestureRecognizerDirectionLeft;
[self.view addGestureRecognizer:swipeRecognizer];

-(void)dismissKeyboard
{
    [self.textField resignFirstResponder];
}
.

Ma non funziona, penso perché sto già usando un pangesterrecognizer per RevealviewController I.e. [self.view addGestureRecognizer:self.revealViewController.panGestureRecognizer];

Sto anche usando UITapGestureRecognizer ma funziona solo per il rubinetto non per il colpo.

È stato utile?

Soluzione

Penso che tu abbia bisogno di utilizzare uno dei metodi delegati nel delegato dell'app sono così potrebbero delegare i metodi lì ma hai bisogno di qualcosa come sotto

non aggiungere qualsiasi gesti

Utilizzare questo delegato nel appDelegate Elimina tutte le macro inizia con #if Don`t Bis Bis Bis Bis Bis Detch

Metti un punto di interruzione nell'app Delegato a questo metodo Sotto Delegate Method Celled Ogni volta che viene generato SWRevealViewController Spostato o affettato ..

- (void)revealController:(SWRevealViewController *)revealController didMoveToPosition:(FrontViewPosition)position
{
   // NSLog( @"%@: %@", NSStringFromSelector(_cmd), [self stringFromFrontViewPosition:position]);
   if(position == FrontViewPositionRight) //check the where to move 
   {
      UINavigationController *viewController = revealController.frontViewController;

     if([viewController.visibleViewController isKindOfClass:[FrontViewController class]])
       {
         [(FrontViewController *)viewController.visibleViewController dismissKeyboard]; //where this is the method declared in the FrontViewController.h file
      }

   }
}
.

C'è ancora un avvertimento funziona ancora un punto di rottura e controllare Spero che questo ti aiuti ...

in FrontViewController.h

  -(void)dismissKeyboard; //add this 
.

nel FrontViewController.m

 -(void)dismissKeyboard
 {
      if([self.textField isFirstResponder]) //check
         [self.textField resignFirstResponder];
 }
.

Altri suggerimenti

Ho avuto lo stesso problema.

Ho aggiunto self.revealController.delegate = self; al controller di visualizzazione che ho usato come vista frontale. E il metodo Delegate viene chiamato.

Ho usato - (void)revealController:(SWRevealViewController *)revealController willMoveToPosition:(FrontViewPosition)position{}. Metodo Delegate e ho scritto [textField endEditing:YES]; in questo metodo delegato.

ha anche aggiunto <SWRevealViewControllerDelegate> al mio viewcontroller.h qual è la mia vista frontale.

Prova questo:

Si prega di aggiungere il codice qui sotto in swrevealviewcontoller.m nel metodo - (bool) _PangesturesHouldBegin

[Self.View ENDEDING: Sì];

Prima di tutto è necessario sostituire il rivelatore: metodo del tuo metodo personalizzato come questo:

UIBarButtonItem *barBtn = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"reveal-icon.png"] style:UIBarButtonItemStyleBordered target:self action:@selector(myMethod)];

self.navigationItem.leftBarButtonItem = barBtn;
.

E che nel tuo metodo:

-(void)myMethod{
[self.view endEditing:YES];
SWRevealViewController *reveal = self.revealViewController;
[reveal revealToggleAnimated:YES];
}
.

funzionerà sicuramente.

Prova questo

[[[self revealViewController] view] endEditing:YES]
.

Aggiungi questo in

- (void)revealController:(SWRevealViewController *)revealController didMoveToPosition:(FrontViewPosition)position 
.

o qualsiasi altro metodo delegato in base alle tue esigenze.

Controllare la posizione corrente del codice di frontview e scrivi del codice di nascondiglio in se condizioni.

Sei sicuro che self.textField sia il primo responder attuale?Se si tenta di dimettersi il primo responder nel metodo del delegato di UIGestureRecognizer – gestureRecognizerShouldBegin:

Ovviamente ritorna Sì in quella funzione.

Modifica il metodo sotto

.

swreevealviewcontoller.m

(IBAction)revealToggle:(id)sender {
    [self.view endEditing:YES];
    [self revealToggleAnimated:YES]; 
}
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top