나는 잠시 동안 내 머리를 벽에 부딪쳐 왔지만 아직도이 문제를 해결하지 못했다.UITextField가 키보드를 사퇴하지 않는다.
저는 modalViewController를 가지고 UITextField (myTroubleMaker라고 부르 자합니다)와 몇 가지 다른 중요하지 않은 구성 요소를 가지고 있습니다. modalVC를로드 할 때 UITextField를 초기화하고 즉시 firstResponder가 될 수있게하고, 또한 modalVC (자체)에 위임자를 설정합니다. modalView는 UITextField와 키보드 열기에 초점을 맞춰 멋지게로드됩니다. 그러나 화면의 아무 곳이나 터치하거나 클릭하면 키보드가 닫히지 않습니다. UITextField에서 포커스를 전환하고 firstResponder를 종료하지만 키보드가 닫히지 않습니다.
이 번거로운 문제의 원인은 무엇입니까? 이 문제를 어떻게 올바르게 해결할 수 있습니까?
코드 : 그것은 모두 내가 키보드로이 mindnumbing 문제를 제외하고 원하는 방식으로 작업이다 .H
@interface myModalViewController : UIViewController <UItextFieldDelegate>
{
UITextField *myTroubleMaker;
}
@property (nonatomic, retain) UITextField *myTroubleMaker;
@end
하는 .m
//I synthesized it properly
-(void)loadView
{
[super loadView];
self.myTroubleMaker = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 300, 50)];
self.myTroubleMaker.backgroundColor = [UIColor clearColor];
self.myTroubleMaker.textColor = [UIColor whiteColor];
self.myTroubleMaker.text = @"";
self.myTroubleMaker.font = [UIFont systemFontOfSize:self.myTroubleMaker.frame.size.height - 8];
self.myTroubleMaker.adjustsFontSizeToFitWidth = YES;
self.myTroubleMaker.minimumFontSize = 0.0;
self.myTroubleMaker.textAlignment = UITextAlignmentCenter;
self.myTroubleMaker.autocorrectionType = UITextAutocorrectionTypeNo;
self.myTroubleMaker.delegate = self;
self.myTroubleMaker.placeholder = @"I eat ur brainz, yoh!";
self.myTroubleMaker.keyboardType = UIKeyboardTypeDefault;
self.myTroubleMaker.returnKeyType = UIReturnKeyDone;
[self.view addSubview:self.tabNameInputField];
[self.myTroubleMaker becomeFirstResponder];
}
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
self.tabNameInputField.text = @"";
return YES;
}
- (void)textFieldDidEndEditing:(UITextField *)textField
{
[textField resignFirstResponder];
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
{
UITouch *touch = [[event allTouches] anyObject];
if ([touch view] == someOtherModalVCComponent) {
//do stuff
if([self.tabNameInputField isFirstResponder])
{
[self.tabNameInputField resignFirstResponder];
}
[self loadGraphics];
}
if ([touch view] != self.myTroubleMaker)
{
if([self.myTroubleMaker isFirstResponder])
{
[self.myTroubleMaker resignFirstResponder];
}
}
}
. 이 질문을 썼음에도 불구하고 가능한 해결책에 대해 비슷한 문제를 확인했습니다.
도움을 주시면 감사하겠습니다. 나는 두통을 여기에서 얻고있다 ...
해결책에 의해 해결 나는 아래에서 받아 들였다.
나중에 참조 할 수 있도록 내 특정 솔루션을 얻으려면 devforums.apple.com/message/425914을 사용했습니다. NavigationController를 사용하여 modalVC를 전달할 때부터 UINavigationController에서 범주를 만들어 사용자의 메서드를 추가하여 키보드의 자동 해제를 지원해야했습니다.
이 나에게 정확히 무슨 일이 있었는지입니다. 대단한 직업! 나중에 참조 할 수 있도록 특정 솔루션을 얻으려는 https://devforums.apple.com/message/425914를 사용했습니다. NavigationController를 사용하여 modalVC를 전달할 때부터 UINavigationController에서 범주를 만들어 사용자의 메서드를 추가하여 키보드의 자동 해제를 지원해야했습니다. 다시 한번 감사드립니다. –