0

resignFirstResponder가 작동하지 않는 iPad 응용 프로그램이 있습니다. 나는 많은 해결책을 시도했다. firstResponder 객체의 인스턴스에서 첫 번째 응답자를 사퇴하려고하지만 키보드가 화면에 남아 있습니다. 그런 다음 모든 창을 반복하여 첫 번째 응답자의 인스턴스를 얻은 다음 해당 인스턴스에서 resignFirstResponder를 호출합니다.resignFirstResponder는 iPad에서 UIkeyboard를 숨기지 않습니다.

또한 다음과 같은 방법으로 UIViewController 카테고리를 만들어 봅니다.

- (BOOL)disablesAutomaticKeyboardDismissal 
    { 
     return NO; 
    } 

그러나이 솔루션은 나를 위해 작동하지 않습니다. 그리고이 키보드 문제는 특정 텍스트 필드뿐만 아니라 모든 텍스트 필드에 있습니다.

업데이트 : 앱의 다른 부분에서 나는 다른 목적으로이 코드를 사용하고 있습니다. 여기에 코드를

- (void)textFieldDidEndEditing:(UITextField *)mtextField 
{ 
[mtextField resignFirstResponder]; this one is not required but I have just write it here. 
} 

- (BOOL)textField:(UITextField *)theTextField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
if([string hasSuffix:@"\n"]) 
{ 
    [theTextField resignFirstResponder]; 
    return NO; 
} 
return YES; 
} 

업데이트입니다 : 내가 시뮬레이터에서 응용 프로그램을 실행하려고 할 때, 몇 번가 resignFirstResponder도 시뮬레이터의 모든 실행 작업,하지만하지 않습니다.

+0

소스를 보지 않고 진행 상황을 추측하기는 어렵습니다. 뷰 컨트롤러의 최상위 뷰에서'endEditing'을 호출 해 보았습니까? –

+0

viewcontroller의 view 속성에서 endEditing을 시도했습니다. – vikas

+0

키보드를 닫으려면 'disablesAutomaticKeyboardDismissal'이 NO를 반환하지 않아야합니까? –

답변

0

이 문제에 대한 해결책이 있습니다. 사실 사과 코코아 API에 약간의 변화가있는 것 같습니다. 내 응용 프로그램에는 UIAlertView이 있는데, 일부 작업이 진행 중임을 표시하기 위해 표시하고 사용자가 완료 할 때까지 기다려야합니다. 이를 위해 나는 내 응용 프로그램에서 사용하는 코드는, 내가

-(void)didPresentAlertView:(UIAlertView *)alertView 
{ 
     [self performSelector:@selector(dismissView:) withObject:alertView afterDelay:0.0]; 

} 

    -(void)dismissView:(UIAlertView*)alertView 
{ 
     [alertView dismissWithClickedButtonIndex:0 animated:NO]; 
} 

내가 여기 생각 어떤 일이 UIAlertView에서 잘못된 것입니다 내 응용 프로그램에서 아래의 코드를 사용할 때 문제가 해결받을

- (void)displayAlertView 
    { 
    UIAlertView *alertView = creating the object; 
    UIActivityIndicatorView *activityIndicator= creating the object; 
    [alertView addSubview:activityIndicator]; 
    [activityIndicator startAnimating]; 
    [alertView show]; 
    [alertView release]; 
    } 

-(void)didPresentAlertView:(UIAlertView *)alertView 
{ 
     [alertView dismissWithClickedButtonIndex:0 animated:NO]; 
} 

했다 그 때문에 키보드는 첫 번째 응답자로 사임 할 때 숨어 있지 않습니다.

0

우선 Objective-C에서 메소드를 호출하지 않고 객체에 메시지를 보냅니다.

UIView은 메시지를 보내야하는 사람이 아닙니다. resignFirstResponder. UITextField을 속성으로 사용합니다. myTextField라고 부릅시다. 당신은이를 사용해야합니다

[self.myTextField resignFirstResponder]; 
+0

메시지를 보내거나 목표 C 방법을 호출하면 차이가 발생합니다. 그리고 나는 또한 재산을 통해 그것을 호출하여 노력했다. – vikas

+0

차이를 만드는 것이 아닙니다. 나는 언어가 어떻게 작동했는지에 대해서 이야기하고있었습니다. 당신이 (나는 너무 많이) "메서드 호출"이라고 부르는 것이 실제로 메시지를 보내는 것입니다. 내 대답이 도움이되지 않아서 미안해. –

+0

네, 도와 줘서 고마워. – vikas

5

가장 간단하고 가장 좋은 방법은 키보드를 숨기는 것은

[self.view endEditing:YES]; 

를 사용하고 당신이 원하는 경우에는 텍스트 필드

+3

이 방법을 시도했지만 작동하지 않습니다. 키보드가 여전히 화면에 있습니다. – vikas

+1

은 펜촉 안의 별도보기에있는 필드입니까 ?? 그렇다면'[thatViewOutlet endEditing : YES];를 호출하십시오. – tGilani

1

의 적절한 대리자를 설정하고 있는지 확인하는 것입니다 반환 키를 누르면 키보드가 사임합니다.

- (BOOL)textFieldShouldReturn:(UITextField *)textField 

{ 
[textField resignFirstResponder]; 
return YES; 
} 

다음 textFieldDidEndEditing이 호출됩니다.

관련 문제