2012-02-28 38 views
6

Rõ ràng là tôi đã hiểu sai UIImageView và UIImage, để đăng ký cử chỉ (chẳng hạn như chạm/bấm) trên hình ảnh, tôi cần phải có hình ảnh trong uiimageview và đăng ký cử chỉ trên uiimageview không phải trên uiimage.làm thế nào để làm cho hình ảnh của tôi có thể bấm

Vì vậy, đoạn mã này làm việc cho tôi:

- (void)drawRect:(CGRect)rect {     
    Obj *obj = ... obj has imageHref which is NSString 

    UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:obj.imageHref]]; 
    [image drawInRect:CGRectMake((self.frame.size.width/2) - (image.size.with/2), (self.frame.size.height/2) - (image.size.height/2), image.size.width, image.size.height)]; 

} 

này mang lại cho tôi những hình ảnh làm trung tâm, nhưng vô ích vì tôi muốn nó được nhấp được vì vậy tôi mặc dù chỉ làm điều đó với UIImageView thay vì như thế này:

- (void)drawRect:(CGRect)rect {     
         Obj *obj = ... obj has imageHref which is NSString 

         UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:obj.imageHref]]; 

    CGRect rect1=CGRectMake((self.frame.size.width/2) - (image.size.width/2), (self.frame.size.height/2) - (image.size.height/2), image.size.width, image.size.height); 

    UIImageView *backgroundImageView = [[UIImageView alloc] initWithImage:radioStationImage]; 

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imageTapped:)]; 

    [backgroundImageView addGestureRecognizer:tap]; 

         [backgroundImageView drawRect:rect1]; 

     } 

Tôi chỉ muốn làm cho hình ảnh này có thể nhấp để thực hiện một số loại hành động khi được nhấp, mức độ khó này có thể như thế nào?

EDIT:

Tôi thực sự thực hiện:

https://github.com/andreyvit/SoloComponents-iOS/tree/master/ATPagingView

nào cung cấp cuộn trang gọn gàng. Nhưng với hình ảnh có thể nhấp ở giữa màn hình không phải trang 1, 2, v.v.

EDIT 2:

Mọi quan điểm về điều này ngày hôm nay?

Trả lời

2

Theo mặc định UIImageView có thuộc tính userInteractionEnabled được đặt thành NO.

làm:

[imageView setUserInteractionEnabled:YES]; 
+0

tôi cập nhật câu hỏi có lẽ có thể giúp bạn ở đâu Tôi hỏi từ – London

7

Bạn không cần phải tùy chỉnh bản vẽ (drawRect:) cho việc này. Chỉ cần thêm UIImageView làm chế độ xem phụ khi bạn tải chế độ xem (trong Trình tạo giao diện hoặc trong loadView tùy thuộc vào cách bạn đang khởi tạo chế độ xem của mình). Sau đó, bạn có thể thêm UITapGestureRecognizer vào chế độ xem đó khi bạn đang thực hiện.

Khi ghi chú @jackslash, bạn cũng cần phải bật tương tác của người dùng cho chế độ xem hình ảnh khi bạn đã thực hiện điều đó.


Tôi tin rằng bạn đang làm việc này phức tạp hơn nhiều. Không cần vẽ tùy chỉnh với drawRect:. Không cần phân lớp UIImageView (tham chiếu liên kết @ madmik3 không liên quan đến iOS4 +). Có lẽ là không cần thiết cho một UIView lớp con thực sự (bạn có thể làm tất cả điều này bên trong bộ điều khiển xem), nhưng đây là cách bạn sẽ làm điều đó trong một cái nhìn lớp con:

- (id)initWithFrame:(CGRect)frame { 
    self = [super initWithFrame:frame]; 
    if (self) { 
    Obj *obj = ... obj has imageHref which is NSString 
    UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:obj.imageHref]]; 
    UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake((self.frame.size.width/2) - (image.size.with/2), (self.frame.size.height/2) - (image.size.height/2), image.size.width, image.size.height)]; 
    imageView.userInteractionEnabled = YES; 
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imageTapped:)]; 
    [imageView addGestureRecognizer:tap]; 

    [self addSubview:imageView]; 
    } 
    return self; 
} 
+0

Tôi đã cập nhật câu hỏi có thể giúp bạn ở nơi tôi yêu cầu từ – London

+0

bạn cũng ghi đè lên UIImageView như vậy http://stackoverflow.com/questions/1848040/detect-touch-on-uiview-with -interface-builder/4494304 # 4494304 – madmik3

+1

@ madmik3 là tất cả điều này cần thiết chỉ để hình ảnh trung tâm và để làm cho nó có thể nhấp (wow). và tôi đã lạc quan về việc học iOS .. – London

Các vấn đề liên quan