2011-12-23 8 views
1

ありがとう、私は私が作成したカスタムビューをスーパービュー(ビューコントローラ)で実装しようとしています。スーパービュー - ビュー - サブビュー。 textFieldをマスクして対話できない実装。 iOS。助けてください

fromAge = [[simpleFormCell alloc]initWithFrame:CGRectMake(0, spaceFromTopLabel + 190, 200, 30)]; 
fromAge.title = @"Age"; 
fromAge.placeholder = @""; 
fromAge.widthOfTextField = 60; 
[fromAge populateView]; 
fromAge.textField.delegate = self; 
fromAge.textField.tag = fromAgeTextFieldTag; 
[fromAge.textField setInputView:multipurposePicker]; 
[scrollViewBackground addSubview:fromAge]; 

toAge = [[simpleFormCell alloc]initWithFrame:CGRectMake(0, spaceFromTopLabel + 190, 200, 30)]; 
toAge.title = @"to"; 
toAge.placeholder = @""; 
toAge.widthOfTextField = 60; 
toAge.leftPaddingForLabel = 210; 
toAge.leftPaddingForTextField = 240; 
[toAge populateView]; 
toAge.textField.delegate = self; 
toAge.textField.tag = toAgeTextFieldTag; 
[toAge.textField setInputView:multipurposePicker]; 
[scrollViewBackground addSubview:toAge]; 

simpleFormCellは、次の実装とカスタムビューである:私はINITで[自己populateView]を呼ばれる同様の方法を持っている

- (id)initWithFrame:(CGRect)frame 
{ 
self = [super initWithFrame:frame]; 
if (self) { 
    title = @"test"; 
    placeholder = @"test2"; 
    numberofLine = 1; 
    leftPaddingForLabel = 20; 
    leftPaddingForTextField = 140; 
    widthOfLabel = 90; 
    widthOfTextField = 160; 
    height = 30; 
    //[self populateView]; 
} 
return self; 
} 

- (void)populateView{ 
label = [[UILabel alloc]initWithFrame:CGRectMake(leftPaddingForLabel, 0, widthOfLabel, (height * numberofLine))]; 
label.text = title; 
label.textAlignment = UITextAlignmentLeft; 
label.backgroundColor = [UIColor clearColor]; 
[self addSubview:label]; 

textField = [[UITextField alloc]initWithFrame:CGRectMake(leftPaddingForTextField, 0, widthOfTextField, (height * numberofLine))]; 
textField.borderStyle = UITextBorderStyleRoundedRect; 
textField.placeholder = placeholder; 
textField.textAlignment = UITextAlignmentCenter; 
textField.tag = tag; 
[textField setReturnKeyType:UIReturnKeyNext]; 
[self addSubview:textField]; 
} 

。それはうまくいくようです。 multipurposePickerが正しく動作していると仮定してください。これはコードですが、この2つのインスタンスには適用されません。

- (id)initWithPreset1:(CGRect)frame title:(NSString *)titleValue numberOfLine:(int)numberOfLineValue delegate:(id) delegateValue tag:(int)tagValue{ 
self = [super initWithFrame:frame]; 
if (self) { 
    title = titleValue; 
    placeholder = @""; 
    numberofLine = numberOfLineValue; 
    leftPaddingForLabel = 20; 
    leftPaddingForTextField = 140; 
    widthOfLabel = 110; 
    widthOfTextField = 160; 
    height = 30; 
    tag = tagValue; 
    [self populateView]; 
    textField.delegate = delegateValue; 
} 
return self; 
} 

これらの白いボックスは、私の感触に反応しません。 (textFieldDidBeginEditingは呼び出されません)。

enter image description here

[フロマージュbecomeFirstResponder]動作します。それはただ私の感触に反応しません。私はそれの上に何もないことを確認した。助けてください。ありがとうございました!

+1

toAgeのUITextFieldはフレーム外です(leftPaddingForTextFieldは240ですが、toAge幅は200です)。これは1つの問題です。 fromAgeも接触に反応しないのですか? scrollViewBackgroundはUIScrollViewですか、それともUIViewですか?フレームがすべてのサブビューに十分な幅であることを確認します。 – Anna

答えて

0

問題が見つかりました。 Anna Kareninaのコメントは私を正しい解決策に導いた。これは私が最初に考えたように、ビュー階層とは関係ありません。起こったのはtoAgeがfromAgeをブロックしていたことでした。これにより、fromAgeのテキストフィールドは応答しなくなります。 Annaのコメントによると、toAgeテキストフィールドが表示されていたにもかかわらず、それはそれをサポートする視野から外れていた。これにより、タッチが受け付けられなくなります。したがって、いずれのボックスもタッチを受け取らない。ありがとう、アンナ!

関連する問題