Я только что начал с xcode и object-c и сделал некоторые очень простые приложения, но у меня проблема с этим очень просто. кнопка возврата клавиатуры не скрывает клавиатуру.Делегат для UITextField не работает ... Кнопка возврата не отвечает
Я искал интернет для решения, и все, что они говорят, это связать делегата с владельцем файла и добавить функцию, и она должна работать, я сделал это и ничего не работает.
У меня есть кнопка ОК, и она работает, а также нажав на любое свободное место на экране работает, только кнопки возврата ....
Я использую тренажер, не испытывая на Iphone пока. (xcode 3.2.5 64 бит с симулятором 4.2).
Это строка кода, которая должна связывать делегат с каждым текстовым файлом. 1. Я уже пробовал возвращать оба YES
и NO
, не работал. 2. Я попробовал как конкретное имя объекта для textField, так и этот общий способ, не работал.
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return NO;
}
В: основной вид подключения контроллера -> Подключения -> розетки, у меня есть: делегат - Владелец файла. и в владельце файла в реферирующих точках есть: делегат - текст в стиле раунда .....
EDIT - я забыл упомянуть об этом раньше, я проверял и метод не вызывается !!!
- (BOOL)textFieldShouldReturn:(UITextField *)textField{
NSLog(@"Working!!!");
[textField resignFirstResponder];
return YES;
}
, что я должен сделать, чтобы это произошло? поэтому люди говорят, чтобы связать делегата, но в моем случае это связано и не вызывает функцию ... я знаю, что это своего рода глупый вопрос, но для такого благородного, как я, решение не очевидно ...
OK, другой Edit - со всем моим кодом: просто не могу понять, что делать .... Это: basicViewController.h
:
#import <UIKit/UIKit.h>
@interface basicViewController : <#superclass#> <UITextFieldDelegate>
@interface basicViewController : UIViewController <UITextFieldDelegate> {
//every object that we want to interact with (like text field or lable) is call an outlet!!!!
//here we define the outlets for our program
IBOutlet UITextField *txtName;
IBOutlet UILabel *lblMessage;
}
//here are the getters and setter for our outlets
@property (nonatomic, retain) IBOutlet UITextField *txtName;
@property (nonatomic, retain) IBOutlet UILabel *lblMessage;
//method decleration for the OK button action
- (IBAction) doSomething;
//method for hiding the keyboard when clicking on empty area in the app
//we will put an invisible button on all area and clicking on it will make keyboard disapear
- (IBAction) makeKeyboardGoAway;
@end
Это basicViewController.m
:
#import "basicViewController.h"
@implementation basicViewController
//synthesizeing the objects that we made' this will create the getter and setters automaticly
@synthesize txtName;
@synthesize lblMessage;
- (IBAction) doSomething{
// makeing keyboard disapear when pressing ok button (doing that form the text field)
//when pressing the OK button, the keyboard will disapear and when clicking in the text field it will show again
[txtName resignFirstResponder];
NSString *msg = [[NSString alloc] initWithFormat:@"Hello, %@",txtName.text];
//the objective-c way for setting the test in the text field
[lblMessage setText:msg];
//the regular object oriented way
//lblMessage.text = msg;
[msg release];
}
- (IBAction) makeKeyboardGoAway{
[txtName resignFirstResponder];
}
//when clicking the return button in the keybaord
- (BOOL)textFieldShouldReturn:(UITextField *)textField{
NSLog(@"Working!!!");
[textField resignFirstResponder];
return YES;
}
- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
- (void)viewDidUnload {
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (void)dealloc {
[super dealloc];
}
@end
Может быть, теперь я более ясен, извините, я этого не делал раньше. У любого есть идея, что я делаю неправильно? оно должно быть довольно Пролив вперед .....
EDIT - Добавление изображения всех элементов, я надеюсь, что поможет мне помочь :-)
10x много для каждого который пытается помочь .... Мне очень нравится эта фреймворк, она настолько велика после C++ и java, python и многих других ... и я работаю с книгой, но это для ios 3.1, может быть, это проблема .....
Если метод не вызывается, вы должны следовать шагам в моем ответе ниже, которые должны вас поймать. – Rog
ОК, я пытаюсь это сделать сейчас, но я думал, что вы сказали, что его нужно называть, прежде чем делать другие вещи .... я скоро буду ждать ДА или НЕТ (цель-c-стиль) ... .LOL – Erez
Это проблема соединения bro ничего больше. Ok выберите файлы owener и open inspector теперь выберите имя textField IBoutlet из view.now, когда вы увидите, что делегат в инспекторе подключений теперь подключается к владельцу файла. Это всегда работает, поэтому проверьте правильно. – Ishu