私はCocoaの開発に不慣れであり、これは初心者の問題だと思います。
特注のUIViewを使用してシンプルな背景キャンバスを作成しています。後日ツールバーを追加できるように、このキャンバスをメインビューから少しインデントして作成できると期待していました。ただし、initWithFrame(およびその他のinit)を使用すると、キャンバスは常にフルスクリーンよりもわずかに小さいサイズではなく、フルスクリーンのサイズになるように作成されます。CGRectの値を完全にオーバーライドしても、違いはありません。touchesBeganイベントを設定し、成功を判断できるように背景色を緑色に設定しましたが、取得できるのは完全に緑色の画面とどこでも機能するタッチイベントだけです。
助けてください-これは私を怒らせており、ウェブ上のどこにも答えを見つけることができません。
関連するコードは次のとおりです(これまでのところ、アプリ全体でこれよりも多くのコードは実際にはありません)。
AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.objMainViewController = [[MainViewController alloc] init];
self.window.rootViewController = self.objMainViewController;
[self.window makeKeyAndVisible];
return YES;
}
MainViewController.h
#import <UIKit/UIKit.h>
#import "viewCanvas.h"
@interface MainViewController : UIViewController
@property (strong, nonatomic) viewCanvas *objViewCanvas;
-(id)init;
@end
MainViewController.m
#import "MainViewController.h"
#import "viewCanvas.h"
@implementation MainViewController
@synthesize objViewCanvas;
-(id)init
{
if (self = [super init]) {
CGRect frame = CGRectMake(100, 100, 100, 100);
objViewCanvas = [[viewCanvas alloc] initWithFrame:frame];
}
return self;
}
- (void)loadView {
self.view = objViewCanvas;
}
- (void)viewDidLoad
{
[super viewDidLoad];
}
viewCanvas.h
#import <UIKit/UIKit.h>
#import "viewCanvas.h"
@interface viewCanvas : UIView {
}
//Init
- (id) initWithFrame:(CGRect)frame;
//Events
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
@end
viewCanvas.m
#import "viewCanvas.h"
@implementation viewCanvas
//Standard inits
- (id) initWithFrame:(CGRect)frame{
self = [super initWithFrame:frame];
[self setBackgroundColor:[UIColor greenColor]];
return self;
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Touches Began Canvas" message:@"Canvas Touches Began" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles: nil];
[alert show];
}
@end