0

UITextFieldの境界線をフェードインしたいので、そのレイヤーを使用してUIViewで自分で再作成しています。

    borderView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, textfield.frame.size.width, textfield.frame.size.height)];
    [borderView.layer setBorderWidth:1.0];
    [borderView.layer setBorderColor:[UIColor grayColor].CGColor];
    [borderView.layer setMasksToBounds:YES];
    [borderView.layer setCornerRadius:10.0];
    [borderView.layer setShadowColor:[UIColor blackColor].CGColor];
    [borderView.layer setShadowOffset:CGSizeMake(0, 3)];
    [borderView.layer setShadowOpacity:0.8];
    borderView.alpha = 0.0;

次に、それをUITextFieldに直接追加します。

    [textField addSubview: borderView];
    [textField sendSubviewToBack: borderView];

ただし、sendSubviewToBack:呼び出しにもかかわらず、テキストフィールドは、タッチされたときにファーストレスポンダーになることを拒否します。

これは、UIViewではなく兄弟ビューとしてImageViewを追加したときに正常に機能しました。

テキストフィールドに入力を受信させるにはどうすればよいですか?

4

2 に答える 2

1
borderView.userInteraction = NO;

私のシム4.3でそれをチェックしました。

于 2012-05-20T07:46:11.703 に答える
0

テキストフィールドに新しいビューを追加する代わりに、テキストフィールド自体のレイヤーを変更するだけです。

#import <QuartzCore/QuartzCore.h>

textField.layer.borderWidth = 1;
textField.layer.borderColor = [UIColor grayColor].CGColor;
textField.layer.cornerRadius = 10;
// etc...
于 2012-05-18T19:23:25.807 に答える