2009-12-18 2 views
1

Можете ли вы поймать события TextField, когда происходит Touch? До сих пор я не видел, чтобы событие Touch регистрировалось в TextField. Например,реализовать touchBegan для UITextField

* (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 

{ 
UITouch *touch = [event allTouches] anyObject; 

if (touch view == TextFieldView) { 
do somthing..... 
} 

Это фиктивный код, что я хочу реализовать, я хочу метод, который уволят, когда пользователь касается текстового поля в течение некоторого периода времени. Если да, то как ???

Просветите меня на этом.

Thnx заранее.

+0

Подробнее код пожалуйста. Покажите соответствующие биты @implementation -> @ end для класса с помощью оператора touchesBegan и строки кода, которые, по вашему мнению, скажут Cocoa, что вы хотите, чтобы ваш метод touchsBegan вызывался (например, создание текстового поля?). Вы также можете прочитать FAQ о том, как правильно отформатировать весь код в виде кода на экране. Вопросы, которые легче читать, легче ответить. – martinr

+0

Извините, что это «touchhesBegan method», а не «оператор». И может ли кто-нибудь еще дать определенное «да» или «нет», можно ли подпадать под UITextField? – martinr

ответ

2

Я просто проверил это, написав подкласс UITextField подкласса, который захватывает штрихи.

@interface TouchTestTextField : UITextField {} 
@end 

#import "TouchTestTextField.h" 
@implementation TouchTestTextField 

-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ 
    NSLog(@"touchesBegan"); 
    NSLog(@"touches=%@,event=%@",touches,event); 
} 

@end 

Он легко захватывает штрихи и показывает текстовое поле как вид на ощупь.

+0

Я принимаю это, но ситуация здесь в том, что у меня есть текстовые поля внутри scrollview –

+0

Скроллвью - проблема. Они улавливают прикосновения, чтобы решить, должны ли они прокручиваться или нет, чтобы они не передавали прикосновения к подзонам, как это делают другие виды. Я думаю, что проблема была рассмотрена ранее в STO. Вы должны искать по ссылкам scrollview. – TechZen

+1

Это больше не работает в Xcode 7/iOS 9. –

1

Вы можете попробовать переопределить [parentView hitTest: withEvent:] в родительском представлении и запросить обработку касаний для textField для каждого касания, когда приложение/пользовательский интерфейс находится в соответствующем состоянии.

Я думаю, что все касанияMoved/Canceled/Ended события для этого касания затем переходят к родительскому, а не к текстовому полю до следующего касания. Но проверьте это и посмотрите.

EDIT

Или просто не устанавливая userInteractionEnabled = НЕТ, если вы хотите, родитель обрабатывать штрихи вместо текстовое поле и установив его = YES, если вы хотите, чтобы TextField обрабатывать штрихи. См. Раздел «Обработка событий» руководства по программированию приложений iPhone.

5

правой кнопкой мыши на UITextField в IB и свяжите приземлится событие требуется IBAction

+0

Какой метод будет вызываться, когда пользователь удалит касание с текстового поля –

+0

Очень простое и эффективное решение. Спасибо. –

Смежные вопросы