ビュー内にUISearchBarがあり、それをタップするたびに、キーボードが起動した後-
-(BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar
の後
これをコンソールに送信します。
<エラー>:
CGContextSetStrokeColorWithColor
:無効なコンテキスト0x0
。これは重大なエラーです。このアプリケーション、またはそれが使用するライブラリは無効なコンテキストを使用しているため、システムの安定性と信頼性の全体的な低下に寄与しています。この通知は礼儀です。この問題を修正してください。今後のアップデートでは致命的なエラーになります。
同じエラーを繰り返します。何が問題になり得るのでしょうか?
[〜#〜] null [〜#〜]コンテキストはあると思いますが、UISearchBarとはどう関係があるのでしょうか? tnx。
これは、Appleが取り組んでいる既知の問題です。次のベータリリースで修正される予定です。
こちらをご覧ください: Xcode Number pad with decimal error
編集:テキストフィールドでその問題を抱えている人にとっては、おそらくこれであなたは回避できるはずです:
From Apple Developer Forums bye Popeye7-だから彼へのすべてのクレジット
この問題の修正を見つけました!私はこれが今壊れている3つのアプリを持っているので、私にとって...これは良い発見です。 StackOverflowでソリューションを見つけました...同様の質問に対する2つの回答を組み合わせました。
私の場合、ユーザーがbarButtonItemをタップすると、「アラート」またはダイアログが表示されます。
大きな違いは、UIAlertViewの割り当て方法にあります。 「NEW WAY」にはtextFieldが表示されており、必要に応じてキーボードが表示されます。
これで、textFieldを表示し、テキストを入力することができ、期待どおりに機能します。 「initWithFrame」を再び追加しても、textFieldの配置には影響しません。
古い方法....
- (IBAction)addEntryTapped:(id)sender
{
[_editorTextView resignFirstResponder];
[self saveTextChanges];
[self dismissPopovers];
_Prompt = [[UIAlertView alloc] initWithTitle:@"New Entry Title..."
message:@"\n\n\n" // IMPORTANT
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:@"OK", nil];
_textField = [[UITextField alloc] initWithFrame:CGRectMake(17.0, 55.0, 250.0, 25.0)];
[_textField setBackgroundColor:[UIColor whiteColor]];
[_textField setPlaceholder:@"New Entry Title"];
_textField.borderStyle = UITextBorderStyleRoundedRect;
_textField.autocapitalizationType = UITextAutocapitalizationTypeWords;
_textField.autocorrectionType = UITextAutocorrectionTypeNo;
[_Prompt addSubview:_textField];
[_Prompt show];
// set cursor and show
[_textField becomeFirstResponder];
}
新しい方法...
- (IBAction) addEntryTapped:(id)sender
{
[_editorTextView resignFirstResponder];
[self saveTextChanges];
[self dismissPopovers];
_Prompt = [[UIAlertView alloc] init];
_Prompt.alertViewStyle = UIAlertViewStylePlainTextInput;
UITextField *text = [_Prompt textFieldAtIndex:0];
_textField = text;
[_Prompt setDelegate:self];
[_Prompt setTitle:@"New Entry Title..."];
[_Prompt setMessage:@""];
[_Prompt addButtonWithTitle:@"Cancel"];
[_Prompt addButtonWithTitle:@"OK"];
[_textField setPlaceholder:@"New Entry Title"];
_textField.autocapitalizationType = UITextAutocapitalizationTypeWords;
_textField.autocorrectionType = UITextAutocorrectionTypeNo;
[_Prompt show];
// set cursor and show keyboard
[_textField becomeFirstResponder];
}
メッセージは9/25/13の12:25 PMにPopeye7によって編集されました
メッセージは9/25/13の12:33 PMにPopeye7によって編集されました
〜/ Library/PreferencesからiOSシミュレーターの設定を削除すると、これはなくなりました。
〜/ Library/Preferencesに移動します。「com.Apple.iphonesimulator.plist」をゴミ箱にドロップします。
ステートフル
.xibファイルに設定されているUISearchBarのAutoLayout制約がこの問題を引き起こしているようです。コンパイラによって捕捉されなかった冗長または競合する制約がある場合、描画エラーが発生し、これらのエラーがスローされる可能性があります。
この「コンテキストの欠落」はiOS 7のバグのようで、空のテキストフィールドでのみ発生するようです。 Apple(おそらく決して;))によってこの問題が修正されるまで、プロジェクトで軽量な回避策を使用しています。
// or wherever
- (void)viewDidLoad
{
if([textfield.text isEqualToString:@""] || textfield.text == nil)
{
textfield.text = @" ";
}
...
}
- (BOOL)textFieldShouldBeginEditing:(UITextField *)theTextField
{
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardDidShow:)
name:UIKeyboardDidShowNotification
object:nil];
return YES;
}
- (void)keyboardDidShow:(NSNotification *)notification
{
if([textField.text isEqualToString:@" "])
{
textField.text = @"";
}
}
...それは私のためにそれをしました。
編集:もちろん、UITextFieldDelegateを実装する必要があります。編集2:残念ながら、それは私が期待したとおりに機能しませんでした。エラーはなくなりましたが、ほとんどの場合空白文字は削除されません...誰もがこれに対する解決策を手に入れましたか?編集3:私はその問題をあきらめています。この方法では、UITextFieldのすべてのユースケースがカバーされるわけではなく、UXが低下します。