문제

나는 사용하고있다 SWRevealViewController 내 앱에 문제가 있습니다.장면에 텍스트 필드가 있는데 키보드가 열려 있을 때 왼쪽으로 스와이프하면 메뉴가 나타나지만 키보드가 사라지지는 않습니다.왼쪽 스와이프 시 키보드를 어떻게 닫나요?

나는 시도했다

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

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

하지만 작동하지 않습니다. 이미 RevealViewcontroller에 panGestureRecognizer를 사용하고 있기 때문이라고 생각합니다. [self.view addGestureRecognizer:self.revealViewController.panGestureRecognizer];

나도 사용하고 있어요 UITapGestureRecognizer 하지만 스와이프가 아닌 탭에서만 작동합니다.

도움이 되었습니까?

해결책

앱 대리인의 대리자 메서드 중 하나를 사용해야 할 필요가 있다고 생각합니다. 위임 된 방법이 거기에 있지만

아래와 같이 뭔가가 필요합니다.

제스처를 추가하지 마십시오

appDelegate 에서이 대리자를 사용하십시오 삭제 모든 매크로는 #if로 시작하지 않습니다.

가 필요하지 않습니다.

앱 위임자 가이 방법에 획득 한 획득 아래의 대리인 메소드 이하, SWRevealViewController가 이동하거나 슬라이스 할 때마다 셀이 셀 수 있습니다.

- (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
      }

   }
}
.

하나의 경고가 여전히 작동합니다. 이것이 도움이되기를 바랍니다 ...

FrontViewController.h

  -(void)dismissKeyboard; //add this 
.

FrontViewController.m

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

다른 팁

나는 같은 문제가 있었다.

나는 추가했다 self.revealController.delegate = self; Front View로 사용한 View Controller에 연결하고 위임 메서드가 호출됩니다.

나는 사용했다 - (void)revealController:(SWRevealViewController *)revealController willMoveToPosition:(FrontViewPosition)position{}대리자 방법과 내가 쓴 [textField endEditing:YES]; 이 대리자 메서드에서.

또한 추가됨 <SWRevealViewControllerDelegate> 내 Front View인 ViewController.h에 추가합니다.

시도 :

SWREVEALVIEWCONTOLLER.M에 아래 코드를 추가하십시오 - (bool) _PangeStureShouldBegin

[self.view endediting : 예];

먼저 reigntoggle을 대체해야합니다. 다음과 같이 사용자 지정 방법으로 메서드를 참조하십시오.

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

self.navigationItem.leftBarButtonItem = barBtn;
.

및 귀하의 방법보다 :

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

확실하게 작동합니다.

를 사용해보십시오
[[[self revealViewController] view] endEditing:YES]
.

이 추가

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

또는 귀하의 요구 사항에 따라 다른 델리게이트 방법.

Frontview의 현재 위치를 확인하고 키보드를 숨기는 코드를 숨기는 코드.

self.textField가 현재 첫 번째 응답자 인 것입니까?UIGestureRecognizer Delegate의 메서드 – gestureRecognizerShouldBegin:

에서 첫 번째 응답자를 사임하려고하는 경우

분명히 해당 기능에서 예를 반환합니다.

아래 방법을 편집

swrevealviewContoller.m

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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top