私はしばらく壁に頭を打ちつけてきましたが、まだ私はこの問題を解決できませんでした。UITextFieldが辞任していないキーボード
私はUITextField(それをmyTroubleMakerと呼ぶ)といくつかの他の重要でないコンポーネントを持つmodalViewControllerを持っています。 modalVCをロードすると、UITextFieldが初期化され、すぐにfirstResponderになることができます。また、modalVC(self)にデリゲートを設定します。 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でカテゴリを作成し、そのメソッドを追加してキーボードの自動解除をサポートする必要がありました。 もう一度ありがとうございます。 –