2013-07-19 114 views
12

我正在使用文本输入制作UIAlertView禁用UIAlertView按钮

UIAlertView *alertView=[[UIAlertView alloc]initWithTitle:@"Save" message:@"Please Enter the Name of PDF" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil]; 
[alertView setAlertViewStyle:UIAlertViewStylePlainTextInput] 

什么我想要做的时候的UITextField是空的我与委托功能

- (BOOL)alertViewShouldEnableFirstOtherButton:(UIAlertView *)alertView 
{ 

return NO; 
} 

禁用确定按钮。当用户开始写文本字段确定按钮应该成为使东西。

+0

因此,一旦一个新的委托方法'UIAlertView'弹出没有按钮来取消和解除它? – Desdenova

回答

34

请试试这个

- (BOOL)alertViewShouldEnableFirstOtherButton:(UIAlertView *)alertView 
    { 
     /* Retrieve a text field at an index - 
      raises NSRangeException when textFieldIndex is out-of-bounds. 

     The field at index 0 will be the first text field 
     (the single field or the login field), 

     The field at index 1 will be the password field. */ 

     /* 
     1> Get the Text Field in alertview 

     2> Get the text of that Text Field 

     3> Verify that text length 

     4> return YES or NO Based on the length 
     */ 

     return [alertView textFieldAtIndex:0].text.length > 0; 

    } 
+2

你实际上可以返回;三元是多余的。 return([[[alertView textFieldAtIndex:0] text] length]> 0) – Joe

10

你应该更好地利用UIAlertViewDelegate方法:

- (BOOL)alertViewShouldEnableFirstOtherButton:(UIAlertView *)alertView 
{ 
    UITextField *textField = [alertView textFieldAtIndex:0]; 
    if ([textField.text length] == 0){ 
     return NO; 
    } 
    return YES; 
} 

请注意,这是在安装iOS 5.0推出