SORU
30 Aralık 2009, ÇARŞAMBA


Tespit UİTextField backspace

Backspace/delete tuşuna boş bir UİTextField iPhone klavye basıldığında algılamak için bir yolu var mı? GERİ AL EĞER UİTextField boş ise sadece basıldığında bilmek istiyorum.


Yorum @Alex Reynolds gelen öneriye dayanarak, bir metin alanı oluştururken şu kodu ekledim:

[[NSNotificationCenter defaultCenter] addObserver:self
          selector:@selector(handleTextFieldChanged:)
              name:UITextFieldTextDidChangeNotification
            object:searchTextField];

Bu bildirim boş bir alanda geri tuşuna bastığım zaman aldı (handleTextFieldChanged işlevi olarak da adlandırılır), ama yine de değil. Herhangi bir fikir?


Bu soru etrafında bazı karışıklıklar var. Geri tuşuna basıldığında bir bildirim almak istiyorum. İşte bu kadar. Ama çözüm de UİTextField zaten boş zaman çalışması gerekir.

CEVAP
4 NİSAN 2013, PERŞEMBE


UITextField alt sınıf:

//Header
//MyTextField.h

//create delegate protocol
@protocol MyTextFieldDelegate <NSObject>
@optional
- (void)textFieldDidDelete;
@end

@interface MyTextField : UITextField<UIKeyInput>

//create "myDelegate"
@property (nonatomic, assign) id<MyTextFieldDelegate> myDelegate;
@end

//Implementation
#import "MyTextField.h"

@implementation MyTextField

- (void)deleteBackward {
    [super deleteBackward];

    if ([_myDelegate respondsToSelector:@selector(textFieldDidDelete)]){
        [_myDelegate textFieldDidDelete];
    }
}

@end

Şimdi sadece ekleyinMyTextFieldDelegatesenin 7 ** ve UITextFields ayarlayınarayüze9* *için:

//View Controller Header
#import "MyTextField.h"

//add "MyTextFieldDelegate" to you view controller
@interface ViewController : UIViewController <MyTextFieldDelegate>
@end

//View Controller Implementation
- (void)viewDidLoad {
    //initialize your text field
    MyTextField *input = 
     [[MyTextField alloc] initWithFrame:CGRectMake(0, 0, 70, 30)];

    //set your view controller as "myDelegate"
    input.myDelegate = self;

    //add your text field to the view
    [self.view addSubview:input];
}

//MyTextField Delegate
- (void)textFieldDidDelete {
    NSLog(@"delete");
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Liam Underwood

    Liam Underwo

    19 Mayıs 2009
  • paulandstorm

    paulandstorm

    4 EYLÜL 2006
  • Shantanu Sood

    Shantanu Soo

    3 Kasım 2008