UILongPressGestureRecognizer在Textfield上显示警报

问题描述:

我有一个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://*.com/questions/3319591/uilongpressgesturerecognizer-gets-called-twice-when-pressing-down和内容:HTTP://计算器。 com/questions/3243812/uilongpressgesturerecognizer-问题和这:http://*.com/questions/15306942/uialertview-alert-repeat-three-times-within-long-press-gesture-recognizer?rq=1和这个: http://*.com/questions/15727203/longpress-on-iphone-app-opens-3-alerts-alertview-or-gesture-code-issue?rq=1请在查询之前检查其他问题。 – fishinear

试试这个,的

- (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

谢谢,我尝试代码,但它不工作:( –

根据您的观察结果更改您的longPressGestureRecognizer.minimumPressDuration(时间间隔以秒为单位,默认持续时间为0.5秒)或使用某些标志来检查是否已显示警报。

+0

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