私のアプリの UITextFields には (Interface Builder で) 定義されたプレースホルダー テキストがあり、プレースホルダー テキストが占める領域をタップしても、これらのフィールドにフォーカスを取得できません (つまり、キーボードを表示して編集を許可します)。プレースホルダー テキストのすぐ外側の領域のテキスト フィールドをタップすると (ただし、テキスト ファイル自体の境界内にあります)、通常どおりに動作します (つまり、キーボードがポップアップし、テキスト フィールドの内容を編集できます)。どうすればこれを修正できますか?
ありがとう。
編集1
わかりました、私はそれを手に入れたと思います。また、これらの UITextFields の「leftView」プロパティに空白のビューを設定しています。これを削除すると、プレースホルダー テキストの領域で UITextFields に触れることができ、期待どおりに反応します。ただし、leftViewにはこのビューが必要です。このスペーサー ビューの背景色を赤にすると、まったく邪魔にならないことがわかるので、何が悪いのかわかりません。
このコードが原因でこの問題が発生するのはなぜですか?
ありがとう。
+(UIView*)getTextFieldLeftSpacerViewWithBackgroundColor:(UIColor*)backgroundColor andHeight:(CGFloat)height
{
UIView *leftWrapper = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 8.0f, height)];
leftWrapper.autoresizingMask = UIViewAutoresizingNone;
[leftWrapper setOpaque:YES];
if(backgroundColor){leftWrapper.backgroundColor = backgroundColor;}
else{leftWrapper.backgroundColor = [UIColor clearColor];}
return [leftWrapper autorelease];
}
+(void)setTextFieldLeftSpacerForTextFieled:(UITextField*)textField
{
if(textField)
{
UIView *spacer = [MYViewController getTextFieldLeftSpacerViewWithBackgroundColor:nil andHeight:textField.bounds.size.height];
textField.leftView = spacer;
textField.leftViewMode = UITextFieldViewModeAlways;
}
}