Toetsenbord wil niet verbergen

Toetsenbord wil niet verbergen discussie in Ontwikkelen voor iOS forum; ( verdwijnt na registratie ) Hallo, Ik heb een grouped tableview met in de 1e cell een textfield. Het ziet er zo uit: Als je op cancel of settings drukt ...



Ga terug   iPhone, iPod touch, iPad en Apple TV forum > Development > Ontwikkelen voor iOS
Wachtwoord vergeten? Registreren!
Registreer FAQ Ledenlijst Kalender Zoeken Berichten van vandaag Markeer forums als gelezen
  #1  
Oud 18 January 2012, 20:05
» iPhone 4S 16GB (Wit) [FW: 5.0.1]  [Jailbreak: Nee]
» iPad 2 Wi-Fi 64GB (Zwart) [FW: 5.0.1]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 30 June 2009
Berichten: 137
Send a message via twitter to Jeroen0704
Standaard Toetsenbord wil niet verbergen

Hallo,

Ik heb een grouped tableview met in de 1e cell een textfield. Het ziet er zo uit:



Als je op cancel of settings drukt ga je terug naar de rootviewcontroller. Dit werkt allemaal tot nu toe. Ik wil echter ook dat het toetsenbord dan verdwijnt, maar dat wil niet lukken. Ik gebruik de volgende code:

Code:
- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    
    [theTextfield becomeFirstResponder];

}
Code:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    
    static NSString *CellIdentifier = @"Cell";
    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
        
        if ([indexPath section] == 0) {
            
            if ([cell.contentView.subviews count] == 0) {
                theTextfield = [[UITextField alloc] initWithFrame:CGRectMake(10, 10, 460, 25)];
                theTextfield.returnKeyType = UIReturnKeyDone;
                theTextfield.enablesReturnKeyAutomatically = YES;
                theTextfield.clearButtonMode = UITextFieldViewModeWhileEditing;
                theTextfield.tag = 12;
                theTextfield.placeholder = @"Message";
                theTextfield.delegate = self;
                [theTextfield canResignFirstResponder];
                [theTextfield addTarget:self action:@selector(doneTyping) forControlEvents:UIControlEventEditingDidEndOnExit];
                
                [cell.contentView addSubview:theTextfield];
            }
        }

    }
    
    // Configure the cell...
    
    if ([indexPath section] == 0) {
               
        cell.selectionStyle = UITableViewCellSelectionStyleNone;
        

    } else {
        cell.textLabel.text = @"Default";
        cell.textLabel.textAlignment = UITextAlignmentCenter;
    }
        
    return cell;
}
Code:
- (IBAction)cancel:(id)sender 
{
    cancelButtonClicked = YES; 
    
    [theTextfield resignFirstResponder];
    
    [self.navigationController popViewControllerAnimated:YES];
    
}
Ik hoop dat iemand me kan helpen.

Groeten,
Jeroen
Advertentie
Advertentie Gesponsorde links (verdwijnt na registratie)

  #2  
Oud 19 January 2012, 21:58
» iPhone 4 32GB (Zwart) [FW: 5.0]  [Jailbreak: Nee]
» iPad 3 Wi-Fi 16GB (Zwart) [FW: 5.1]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 14 October 2008
Locatie: Haarlem
Berichten: 348
Standaard

In je .h file moet je vermelden dat je het <UITextFieldDelegate> protocol implementeert en je voegt deze methoden toe:
Code:
- (BOOL) textFieldShouldReturn:(UITextField *)theTextField {
	[theTextField resignFirstResponder];
	return YES;
}

- (IBAction) textFieldDoneEditing:(id)sender {
	[sender resignFirstResponder];
}
__________________
Leon
[iPhone- en Java ontwikkelaar]
  #3  
Oud 19 January 2012, 22:02
» iPhone 4S 16GB (Wit) [FW: 5.0.1]  [Jailbreak: Nee]
» iPad 2 Wi-Fi 64GB (Zwart) [FW: 5.0.1]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 30 June 2009
Berichten: 137
Send a message via twitter to Jeroen0704
Standaard

Dat heb ik al geprobeerd, maar helaas werkte het niet.
Ik heb na een lange tijd het internet doorgespeurd te hebben het probleem gevonden. Ik heb namelijk een navigation controller als form sheet en op de een of andere manier laat Apple het dan niet toe om het toetsbord te verbergen met de resignFirstResponder functie.

Ik heb het probleem dus gevonden, helaas nog geen oplossing.
  #4  
Oud 19 January 2012, 22:10
» iPhone 4 32GB (Zwart) [FW: 5.0]  [Jailbreak: Nee]
» iPad 3 Wi-Fi 16GB (Zwart) [FW: 5.1]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 14 October 2008
Locatie: Haarlem
Berichten: 348
Standaard

Hoe heb jij 'theTextField' gedeclareerd?
Zo?
Code:
UITextField <UITextFieldDelegate> * theTextField;
  #5  
Oud 19 January 2012, 22:15
» iPhone 4S 16GB (Wit) [FW: 5.0.1]  [Jailbreak: Nee]
» iPad 2 Wi-Fi 64GB (Zwart) [FW: 5.0.1]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 30 June 2009
Berichten: 137
Send a message via twitter to Jeroen0704
Standaard

Nee, zo:


Code:
@interface TwitterMessageViewController: UIViewController <UITableViewDelegate, UITableViewDataSource, UITextFieldDelegate>
{
    UITextField *theTextfield;
    IBOutlet UITableView *theTableVuew;
    
    UIBarButtonItem *cancelButton;
    BOOL cancelButtonClicked;


}
@property (nonatomic, retain) UITextField *theTextfield;


@end
  #6  
Oud 19 January 2012, 22:20
» iPhone 4 32GB (Zwart) [FW: 5.0]  [Jailbreak: Nee]
» iPad 3 Wi-Fi 16GB (Zwart) [FW: 5.1]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 14 October 2008
Locatie: Haarlem
Berichten: 348
Standaard

Wijzig de property declaratie eens in:
Code:
@property (nonatomic, retain) UITextField <UITextFieldDelegate> * theTextfield;
(trouwens, in cellForRowAtIndexPath vergeet je
Code:
[theTextField release];
)
  #7  
Oud 19 January 2012, 22:22
» iPhone 4S 16GB (Wit) [FW: 5.0.1]  [Jailbreak: Nee]
» iPad 2 Wi-Fi 64GB (Zwart) [FW: 5.0.1]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 30 June 2009
Berichten: 137
Send a message via twitter to Jeroen0704
Standaard

Ik zal het eens proberen!

Ik release theTextField trouwens ook in de dealloc en de viewDidUnload methoden, moet het dan ook in de cellForRowAtIndexPath?
  #8  
Oud 19 January 2012, 22:26
» iPhone 4 32GB (Zwart) [FW: 5.0]  [Jailbreak: Nee]
» iPad 3 Wi-Fi 16GB (Zwart) [FW: 5.1]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 14 October 2008
Locatie: Haarlem
Berichten: 348
Standaard

Citaat:
Oorspronkelijk geplaatst door Jeroen0704 Bekijk bericht
Ik zal het eens proberen!

Ik release theTextField trouwens ook in de dealloc en de viewDidUnload methoden, moet het dan ook in de cellForRowAtIndexPath?
Niet ook. Alleen daar.

Hou dit als regel aan: "Als je een object alloceert en je hebt deze object referentie niet meer nodig dan moet je (liefst in dezelfde methode) het object weer releasen". Beetje kromme zin maar je begrijpt het denk ik wel.
  #9  
Oud 19 January 2012, 22:28
» iPhone 4S 16GB (Wit) [FW: 5.0.1]  [Jailbreak: Nee]
» iPad 2 Wi-Fi 64GB (Zwart) [FW: 5.0.1]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 30 June 2009
Berichten: 137
Send a message via twitter to Jeroen0704
Standaard

@Wubbe

Het werkt helaas niet..
  #10  
Oud 19 January 2012, 22:36
» iPhone 4 32GB (Zwart) [FW: 5.0]  [Jailbreak: Nee]
» iPad 3 Wi-Fi 16GB (Zwart) [FW: 5.1]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 14 October 2008
Locatie: Haarlem
Berichten: 348
Standaard

Laatste poging. waarom heb je:
Code:
[theTextfield addTarget:self action:@selector(doneTyping) forControlEvents:UIControlEventEditingDidEndOnExit];
Dat is (volgens mij) niet nodig
  #11  
Oud 19 January 2012, 22:39
» iPhone 4S 16GB (Wit) [FW: 5.0.1]  [Jailbreak: Nee]
» iPad 2 Wi-Fi 64GB (Zwart) [FW: 5.0.1]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 30 June 2009
Berichten: 137
Send a message via twitter to Jeroen0704
Standaard

Citaat:
Oorspronkelijk geplaatst door wubbe Bekijk bericht
Niet ook. Alleen daar.

Hou dit als regel aan: "Als je een object alloceert en je hebt deze object referentie niet meer nodig dan moet je (liefst in dezelfde methode) het object weer releasen". Beetje kromme zin maar je begrijpt het denk ik wel.
Ik begrijp je wel inderdaad Ik gebruik hem echter nog wel om te kijken hoe lang te tekst is, maar dit kan ik dan beter doen door de tag van de textfield en de cell neem ik aan?

---------- Bericht automatisch samengevoegd op 19 januari 2012 om 22:41 ----------

Citaat:
Oorspronkelijk geplaatst door wubbe Bekijk bericht
Laatste poging. waarom heb je:
Code:
[theTextfield addTarget:self action:@selector(doneTyping) forControlEvents:UIControlEventEditingDidEndOnExit];
Dat is (volgens mij) niet nodig
Met:

Code:
- (BOOL) textFieldShouldReturn:(UITextField *)theTextField {
	[theTextField resignFirstResponder];
	return YES;
}
is het inderdaad niet nodig, maar ik wil er uiteindelijk een "done" button van maken en als je daarop klikt ook meteen terug gaan naar het "hoofd-settings" menu.
  #12  
Oud 19 January 2012, 22:41
» iPhone 4 32GB (Zwart) [FW: 5.0]  [Jailbreak: Nee]
» iPad 3 Wi-Fi 16GB (Zwart) [FW: 5.1]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 14 October 2008
Locatie: Haarlem
Berichten: 348
Standaard

Hoe kijk je hoe lang de tekst is?

Ah, daarvoor wil je de tag gebruiken! Dan kun je hem net zo goed inderdaad in de dealloc pas releasen en gewoon gebruiken.
  #13  
Oud 19 January 2012, 22:44
» iPhone 4S 16GB (Wit) [FW: 5.0.1]  [Jailbreak: Nee]
» iPad 2 Wi-Fi 64GB (Zwart) [FW: 5.0.1]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 30 June 2009
Berichten: 137
Send a message via twitter to Jeroen0704
Standaard

Code:
- (NSString *) tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section
{
    if (section == 0) 
    {
        if ([theTextfield.text length] > 0) {
             return [NSString stringWithFormat:@"Listened to: title - artist %@", theTextfield.text];
        } else {
             return [NSString stringWithFormat:@"Listened to: title - artist"];
        }
       
    } else {
        return nil;
    }
}


---------- Bericht automatisch samengevoegd op 19 januari 2012 om 22:45 ----------

En hier ook nog in de cellForRowAtIndexpath: methode:


Code:
if ([theTextfield.text length] == 0) {
            cell.detailTextLabel.text = [NSString stringWithFormat:@"0/30"];  
        } else {
            cell.detailTextLabel.text = [NSString stringWithFormat:@"%.0u/30", [theTextfield.text length]];  
        }
        
        if ([theTextfield.text length] > 30) 
        {
            [self.navigationItem setHidesBackButton: YES animated: YES];
            cell.detailTextLabel.textColor = [UIColor colorWithRed:((1.0/255)*218) green:((1.0/255)*0) blue:((1.0/255)*0) alpha:1.0];

        } else {
            [self.navigationItem setHidesBackButton: NO animated: YES];
            cell.detailTextLabel.textColor = [UIColor colorWithRed:(1.0/255)*79 green:(1.0/255)*97 blue:(1.0/255)*146 alpha:1.0];


        }
  #14  
Oud 19 January 2012, 22:48
» iPhone 4 32GB (Zwart) [FW: 5.0]  [Jailbreak: Nee]
» iPad 3 Wi-Fi 16GB (Zwart) [FW: 5.1]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 14 October 2008
Locatie: Haarlem
Berichten: 348
Standaard

ik snap 'm. Nou, ik heb je dus helaas niet kunnen helpen . Succes verder.
  #15  
Oud 19 January 2012, 22:50
» iPhone 4S 16GB (Wit) [FW: 5.0.1]  [Jailbreak: Nee]
» iPad 2 Wi-Fi 64GB (Zwart) [FW: 5.0.1]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 30 June 2009
Berichten: 137
Send a message via twitter to Jeroen0704
Standaard

Dankjewel! en bedankt voor je hulp!
Reageren


Er zijn 1 actieve gebruikers die momenteel deze discussie bekijken (0 leden en 1 gasten)

 
Discussietools
Weergave

Soortgelijke discussies

Discussie Auteur Forum Reacties Laatste bericht
hoe kan ik toetsenbord verbergen? Roccade iPhone algemeen 4 19 November 2010 13:08
Toetsenbord werk niet saver1982 iPhone algemeen 0 10 September 2009 01:57
IPhone Toetsenbord werkt niet saver1982 iPhone algemeen 6 12 February 2009 19:30
iphone wil niet veder beeld blijft op het oplaad teken staan hij wil niks meer mike18 Unlock [archief] 2 18 February 2008 08:58

Regels voor berichten
Je mag geen nieuwe discussies starten
Je mag niet reageren op berichten
Je mag geen bijlagen versturen
Je mag niet je berichten bewerken

BB code is Aan
Smileys zijn Aan
[IMG]-code is Aan
HTML-code is Uit
Trackbacks are Aan
Pingbacks are Aan
Refbacks are Uit



Alle tijden zijn GMT +2. Het is nu 17:37.