2013-10-31 35 views
0

我有一個UILongPressGestureRecognizer添加到UITextField中。當我按下UITextField時,它顯示我警覺,但這是三個警告給我看。 這是我的代碼:UILongPressGestureRecognizer在Textfield上顯示警報

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    UILongPressGestureRecognizer *gs = [[UILongPressGestureRecognizer  alloc]initWithTarget:self action:@selector(AlertServer:)]; 
    gs.delegate = self; 
    [_companyidTxt addGestureRecognizer:gs]; 
    [gs release]; 
} 
-(void)AlertServer:(UILongPressGestureRecognizer *)gs 
{ 
    alertView = [[UIAlertView alloc] initWithTitle:@"Server" message:@"" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Okay", nil]; 
    alertView.alertViewStyle = UIAlertViewStylePlainTextInput; 
    myTextField = [alertView textFieldAtIndex:0]; 
    myTextField.text=mainString; 
    [alertView show]; 
    [alertView release]; 
    [alertView retain]; 
} 

誰能解釋爲什麼出現這種情況,以及如何預防? Thanx

+0

重複:http://stackoverflow.com/questions/3319591/uilongpressgesturerecognizer-gets-called-twice-when-pressing-down和內容:HTTP://計算器。 com/questions/3243812/uilongpressgesturerecognizer-問題和這:http://stackoverflow.com/questions/15306942/uialertview-alert-repeat-three-times-within-long-press-gesture-recognizer?rq=1和這個: http://stackoverflow.com/questions/15727203/longpress-on-iphone-app-opens-3-alerts-alertview-or-gesture-code-issue?rq=1請在查詢之前檢查其他問題。 – fishinear

回答

1

試試這個,的

- (void)AlertServer:(UILongPressGestureRecognizer*)sender { 
    if (sender.state == UIGestureRecognizerStateEnded) { 
     alertView = [[UIAlertView alloc] initWithTitle:@"Server" message:@"" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Okay", nil]; 
    alertView.alertViewStyle = UIAlertViewStylePlainTextInput; 
    myTextField = [alertView textFieldAtIndex:0]; 
    myTextField.text=mainString; 
    [alertView show]; 
    [alertView release]; 

    } 
    else if (sender.state == UIGestureRecognizerStateBegan){ 
     NSLog(@"UIGestureRecognizerStateBegan."); 
    //Do Whatever You want on Began of Gesture 
    } 
    } 
+0

謝謝,我嘗試代碼,但它不工作:( –

0

根據您的觀察結果更改您的longPressGestureRecognizer.minimumPressDuration(時間間隔以秒爲單位,默認持續時間爲0.5秒)或使用某些標誌來檢查是否已顯示警報。

+0

謝謝你,但它不工作:( –