これは私の問題です:
から拡張するクラスがUIView
あり、を呼び出しVerticalFieldLayout
ました。
FieldLayoutHeader:
#import <Foundation/Foundation.h>
#import "Layout.h"
#import <QuartzCore/QuartzCore.h>
static int const VIEW_SPACE = 5;
extern int HORIZONTAL_LAYOUT;
extern int VERTICAL_LAYOUT;
@interface FieldLayout : UIView <Layout> {
@private
float xPos;
float yPos;
int type;
}
@property(nonatomic) int type;
-(void) applyRadius: (float) radius;
@end
フィールドレイアウトの実装
#import "FieldLayout.h"
int HORIZONTAL_LAYOUT = 345678;
int VERTICAL_LAYOUT = 12345;
@implementation FieldLayout
@synthesize type;
- (id)init {
self = [super init];
if (self) {
xPos = 0;
yPos = 0;
}
return self;
}
- (void)resize:(CGRect)movement {
float cwidth = self.frame.size.width;
float cheight = self.frame.size.height;
if (type == HORIZONTAL_LAYOUT) {
if (cwidth < movement.size.width + movement.origin.x) {
cwidth = movement.size.width + movement.origin.x;
}
}
if (type == VERTICAL_LAYOUT) {
if (cheight < movement.size.width + movement.origin.y) {
cheight = movement.size.height + movement.origin.y;
}
}
self.frame = CGRectMake(self.frame.origin.x, self.frame.origin.y, cwidth, cheight);
}
- (void)applyRadius:(float)radius {
[[self layer] setCornerRadius:radius];
[[self layer] setMasksToBounds:YES];
}
- (void)addSubview:(UIView *)view {
if (type == HORIZONTAL_LAYOUT) {
view.frame = CGRectMake(xPos, view.frame.origin.y, view.frame.size.width, view .frame.size.height);
xPos = xPos + view.frame.size.width + VIEW_SPACE;
} else {
view.frame = CGRectMake(view.frame.origin.x, yPos, view.frame.size.width, view.frame.size.height);
yPos = yPos + view.frame.size.height + VIEW_SPACE;
}
[self resize:view.frame];
[super addSubview:view];
}
@end
VerticalHeader:
#import <Foundation/Foundation.h>
#import "FieldLayout.h"
#import <QuartzCore/QuartzCore.h>
@interface VerticalFieldLayout : FieldLayout
- (void)setBorderNcolor:(float)width andcolor:(UIColor *)andcolor;
@end
VerticalImplementation:
#import "VerticalFieldLayout.h"
@implementation VerticalFieldLayout
- (id)init {
self = [super init];
if (self) {
[self setType:VERTICAL_LAYOUT];
self.userInteractionEnabled = YES;
}
return self;
}
- (void)applyRadius:(float)radius {
[[self layer] setCornerRadius:radius];
}
- (void)setBorderNcolor:(float)width andcolor:(UIColor *) color {
self.layer.borderWidth = width;
self.layer.borderColor = color.CGColor;
}
@end
ここで、addSubviewsを使用してaprox4VerticalLayoutsをVerticalFieldLayoutに追加しました。すべてのVerticalFieldLayout(4つ)にUITexfieldsを追加しました。
問題: UITextfieldsをタブで移動すると、タブイベントが応答しないのはなぜですか?しかし、UITextfieldsをUIViewcontrollerのビューに直接追加すると、完全に機能します。