Hai dan terima kasih sebelumnya atas dukungan Anda :)
Jadi yang saya lakukan adalah: 1. membuat tampilan gulir dan menambahkannya ke tampilan utama 2. lalu ke tampilan gulir tambahkan UIView lain yang ukurannya sama dengan tampilan gulir; 3. dan di UIView tambahkan tombol yang dibuat secara terprogram ke penyihir. Saya juga menambahkan: tag, gambar, ukuran secara terprogram.
Urutan penambahan objek (pengasuhan): UIView->UIScrollView->UIView->UIButton
Dan inilah kode yang saya gunakan:
#import "ViewController.h"
@interface ViewController ()
{
UIButton *button;
UIView *buttonHolderView;
}
@end
@implementation ViewController
@synthesize scroll;
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
//scroll view is added using storyboards
[scroll setScrollEnabled:YES];
[scroll setContentSize:CGSizeMake(1840, 1752)];
scroll.bounces = NO;
[scroll setBackgroundColor:[UIColor blackColor]];
//UPDATE 4
//here changed to integer coordinates and now it works
buttonHolderView = [[UIView alloc] initWithFrame:CGRectMake( scroll.frame.origin.x, scroll.frame.origin.y, scroll.frame.size.width, scroll.frame.size.height)];
[buttonHolderView setBackgroundColor:[UIColor blueColor]];
[scroll addSubview:buttonHolderView];
NSString *title = @"";
int tagForTheButton = 0;
button = [UIButton buttonWithType:UIButtonTypeCustom];
button.adjustsImageWhenHighlighted = NO;
button.frame = CGRectMake(xPossition, yPossition, 200, 64);
button.tag = tagForTheButton;
[button setTitle:title forState:UIControlStateNormal];
[button addTarget:self action:@selector(buttonPressed: ) forControlEvents:UIControlEventTouchUpInside];
[buttonHolderView addSubview:button];
[button setBackgroundImage:[UIImage imageNamed:[NSString stringWithFormat:@"Tile.png"]] forState:UIControlStateNormal];
//other scroll and pinch gesture adjustments
//UPDATE WITH CODE FOR PINCH AND SCROLL
[scroll setUserInteractionEnabled:YES];
UIPinchGestureRecognizer *pitchGestureRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(handlePitch:)];
[scroll addGestureRecognizer:pitchGestureRecognizer];
imageMaxScale = 1.1;
imageMinScale = 0.2;
imageCurrentScale = 1.0;
yMyCharacterFrame = 200;
xMyCharacterFrame = 200;
myCharacterFrame = [[UIImageView alloc]init];
myCharacterFrame.frame = CGRectMake(xMyCharacterFrame, yMyCharacterFrame, 100, 100);
myCharacterFrame.image = [UIImage imageNamed:@"image0.png"];
[myCharacterFrame setUserInteractionEnabled:YES];
[scroll addSubview:myCharacterFrame];
}
-(void)handlePitch:(UIPinchGestureRecognizer *) pinchGesture{
if (imageCurrentScale * [pinchGesture scale] > imageMinScale && imageCurrentScale * [pinchGesture scale] <imageMaxScale) {
imageCurrentScale = imageCurrentScale * [pinchGesture scale];
CGAffineTransform zoomTransform = CGAffineTransformMakeScale(imageCurrentScale, imageCurrentScale);
[[pinchGesture view] setTransform:zoomTransform];
}
[pinchGesture setScale:1.0];
CGRect scrollFrame;
scrollFrame.origin = _mainViewHolder.frame.origin;
scrollFrame.size = CGSizeMake(568, 320);
scroll.frame = scrollFrame;
}
-(void)buttonPressed:(UIButton *)sender{
NSLog(@"button pressed");
}
Tombolnya digambar di layar tetapi ketika saya mencoba mengetuknya, tombol itu tidak masuk ke fungsi yang ditekan (bukan NSLog).
Ada saran? Saya juga tidak mengerti apa yang dimaksud dengan addTarget (Saya telah membaca dokumentasi Apple).
PEMBARUAN 2: Jika saya menambahkan tombol ke tampilan gulir, tombol itu tidak hanya ditampilkan tetapi saya juga dapat mengetuknya.
PEMBARUAN 3: SAYA TELAH MENJALANKAN: po [scroll recursiveDescription]. Itu kembali:
UIScrollView: 0x7f95c9c7adf0; frame = (0 0; 320 568); clipsToBounds = YES; autoresize = RM+BM; gestureRecognizers = <NSArray: 0x7f95c9c7f5f0>; layer = <CALayer: 0x7f95c9c79820>; contentOffset: {0, 0}; contentSize: {1840, 1752}>
| <UIImageView: 0x7f95c9c7ed40; frame = (317.5 561; 2.5 7); alpha = 0; opaque = NO; autoresize = LM; userInteractionEnabled = NO; layer = <CALayer: 0x7f95c9c7ec20>>
| <UIImageView: 0x7f95c9c7d2f0; frame = (313 565.5; 7 2.5); alpha = 0; opaque = NO; autoresize = TM; userInteractionEnabled = NO; layer = <CALayer: 0x7f95c9c7dda0>>
| <UIButton: 0x7f95c9d9f9c0; frame = (0 0; 320 568); opaque = NO; layer = <CALayer: 0x7f95c9d9e750>>
| | <UIButton: 0x7f95c9d9fea0; frame = (0 0; 200 64); opaque = NO; layer = <CALayer: 0x7f95c9d96540>>
| | | <UIImageView: 0x7f95c9cc4590; frame = (0 0; 200 64); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x7f95c9cc4690>>
DAN:
(lldb) po [button recursiveDescription]
<UIButton: 0x7f95cd24e1f0; frame = (0 0; 200 64); opaque = NO; tag = 0; layer = <CALayer: 0x7f95cd24e100>>
| <UIImageView: 0x7f95cd251b70; frame = (0 0; 200 64); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x7f95cd251c70>>
PEMBARUAN 4: Kode tampaknya berfungsi dengan baik setelah diubah menjadi integer: buttonHolderView = [[UIView alloc] initWithFrame:CGRectMake( scroll.frame.origin.x, scroll.frame.origin.y, scroll.frame.size.width, gulir.bingkai.ukuran.tinggi)];
Terima kasih atas semua bantuan Anda terutama kepada DoertyDoerk yang menunjukkan sesuatu yang benar-benar baru bagi saya.
user Interaction Enabled
tidak aktif untuk gulir? Saya mencoba kode Anda dan berhasil. - person gabbler   schedule 11.01.2015userInteractionEnabled
disetel keNO
. - person Jeffery Thomas   schedule 11.01.2015