2013-04-05 2 views
0

내가 클릭 버튼에 경고 팝업을 개방하고 창 아무 곳이나 눌러 때좋은 코드를 작동하고

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"PopUP Title" 
               message:@"This is pop up window/ Alert" 
               delegate:nil 
             cancelButtonTitle:@"OK" 
             otherButtonTitles:nil]; 

UIImageView *tempImageView=[[UIImageView alloc]initWithFrame:CGRectMake(20,20,50,50)]; 
tempImageView.image=[UIImage imageNamed:@"abc.png"]; 

[alert addSubView:tempImageView] 

[alert show]; 

경고 상자가 확인 버튼의 클릭에 폐쇄되어있는 UIAlertView를 dimiss하는 방법, 난 그것을 원하지 않아, 나는 창문 어디서나 클릭하면 경고창을 뜨고 싶다. 도와주세요.

답변

0

iOS에서 본질적으로 "토스트"를 재현하려는 것처럼 들립니다. 좋은 소식은 이미 누군가가 그 일을했다는 것입니다. See this project.

편집 : iToast를 사용하고 싶지 않습니다. 나는 당신의 스타일이 좋고 코드는 적다. 여기에 내가 생각해내는 것이있다. UIAlertView의 모달 특성을 극복하는 유일한 방법은 터치 이벤트를 처리하기 위해 수퍼 뷰를 추가하는 것 밖에는 다른 사람들이 말한 것처럼 분명해 보입니다. 하지만 매번 수동으로 수행 할 필요는 없습니다. UIAlertView의 서브 클래 싱을 고려하십시오. 크기를 조정하기에 좋은 장소 인 머리 약 setFrame:에 대한 @wagashi, 내 대답을 받아 주셔서 감사합니다, 감사 :

편집 : 이런 식으로 뭔가를 시도하십시오. 당신의 코드는 아주 큰 토스트와 같은 작은 경고를 만들어냅니다, 그러나 나는 그것을 시도했을 때 메시지가 오랫동안 사라진 것처럼 보였다는 것을 알게되었습니다. 따라서 setFrame:을 수정하여 하나의 버튼 크기만큼 경고 크기를 줄이고 화면의 중앙에 유지하십시오. 클래스가 정확하게 질문 제목 "iOS에 답하는 것이므로 어디서나 탭 하나로 UIAlertView를 닫는 방법"

NoButtonAlertView.h는

#import <UIKit/UIKit.h> 
@interface _NoButtonAlertViewCover : UIView 
@property (nonatomic,assign) UIAlertView *delegate; 
@end 
@interface NoButtonAlertView : UIAlertView 
-(id)initWithTitle:(NSString *)title message:(NSString *)message; 
@end 

NoButtonAlertView.m

#import "NoButtonAlertView.h" 
@implementation _NoButtonAlertViewCover 
@synthesize delegate = _delegate; 
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{ 
    [self removeFromSuperview]; 
    [_delegate dismissWithClickedButtonIndex:0 animated:YES]; 
} 
@end 
@implementation NoButtonAlertView 
-(void)show{ 
    [super show]; 
    _NoButtonAlertViewCover *cover = [[_NoButtonAlertViewCover alloc] initWithFrame:[UIScreen mainScreen].bounds]; 
    cover.userInteractionEnabled = YES; 
    cover.backgroundColor = [[UIColor lightGrayColor] colorWithAlphaComponent:.01]; 
    cover.delegate = self; 
    [self.superview addSubview:cover]; 
} 
-(id)initWithTitle:(NSString *)title message:(NSString *)message{ 
    if ((self = [super initWithTitle:title message:message delegate:nil cancelButtonTitle:nil otherButtonTitles:nil, nil])){ 
    } 
    return self; 
} 
- (void)setFrame:(CGRect)rect { 
    // Called multiple times, 4 of those times count, so to reduce height by 40 
    rect.size.height -= 10; 
    self.center = self.superview.center; 
    [super setFrame:rect]; 
} 
@end 
이 간단한 UIAlertView 서브 클래스로

및 커버에 대한 UIView 서브 클래스, 당신은 단순히 당신이하는 것처럼 사용할 수 있습니다 표준 UIAlertView. 그래서 같이 :

NoButtonAlertView *alert = [[NoButtonAlertView alloc] initWithTitle:@"Hello" message:@"I am the very model of a modern major general; I'm information, vegitable, animal, and mineral."]; 
[alert show]; 

은 얻을 것이다 :

Custom AlertView