2015-11-04 185 views
-2

我想在文本字段爲空時隱藏按鈕,然後在用戶開始鍵入時顯示它。以編程方式隱藏和取消隱藏按鈕

我試着做了一個按鈕的插座,並在viewDidLoad使用while循環來實現按鈕和文本字段的插座。它沒有工作,我一直在四處搜索,但大部分代碼都是客觀的,因此我很難將其翻譯爲swift。

當文本字段爲空時,甚至可以隱藏按鈕嗎?

斯威夫特首選

+1

你可以發佈你的代碼嗎? – anhtu

+0

您是否閱讀過文檔? 「檢測textview中的變化」和「使按鈕變爲不可見」的組合應該執行此技巧 – Arc676

+0

爲TextDelegates添加偵聽器。您將在用戶開始輸入文字時收到通知,然後您可以根據文字輸入隱藏/取消隱藏。 – GoodSp33d

回答

0

使用UITextFieldDelegate隱藏和顯示按鈕。

class ViewController: UIViewController,UITextFieldDelegate //set delegate to class 

@IBOutlet var txtValue: UITextField    //create a textfile variable 

override func viewDidLoad() { 
    super.viewDidLoad() 
    txtValue.delegate = self 
    YourButton.hidden=false; 

      //set delegate to textfile 
} 


func textFieldDidBeginEditing(textField: UITextField!) 
{ //delegate method 

    YourButton.hidden=true; 
} 

func textFieldShouldEndEditing(textField: UITextField!) -> Bool { //delegate method 
    return false 

} 

func textFieldShouldReturn(textField: UITextField!) -> Bool { //delegate method 
    textField.resignFirstResponder() 

    return true 
} 

可能會幫助你。

+0

謝謝,真的很簡單:) – Nathannn

+0

如果我的答案對你很有幫助把它標記爲答案或給我點贊 – BHUMICA

+0

一個問題,你永遠不會取消隱藏按鈕,一旦打字開始,它就會一直隱藏起來。我認爲這是壞的B/C,那麼用戶無法扭轉過程。 這也是一個「meh」的答案。更好的方法是使用ReactiveCocoa並將按鈕的隱藏狀態綁定到文本字段的文本信號並動態隱藏它。 – barndog

0

試試這個代碼:

func textField(textField: UITextField, shouldChangeCharactersInRange range:NSRange, replacementString string: String) -> Bool 
{ 
    text = text.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()) 
    var strMsg: String = textView.text.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()) 
    if strMsg.length() > 0 || text.length() > 0 
    { 
     self.YourButton.alpha = 1.0 
     self.YourButton.enabled = true 
    } 
    else 
    { 
     self.YourButton.alpha = 0.5 
     self.YourButton.enabled = false 
    } 
    return true 
} 
+0

感謝您花時間回答我的問題,但我繼續@Bhumica答案,因爲它很簡單,但我相信你的代碼的作品,以及其他的東西:) – Nathannn

0

首先,您必須使用此代碼隱藏按鈕。

btn1.hidden = YES; 

後分配UITextFieldDelegate到文件的所有者,也實現了相同的委託在.h文件中,當你開始寫寫在文本框,你這個代碼一些文字後比

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
    NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string]; 

    [self updateTextLabelsWithText: newString]; 

    return YES; 
} 

-(void)updateTextLabelsWithText:(NSString *)string 
{ 
    [myLabel setText:string]; 
} 

當文本框的文本運行使用

btn1.hidden = NO; 

希望這有助於。

+0

感謝張貼,但正如我所說我有一個很難轉換爲迅速 – Nathannn