2016-05-03 3 views
-3

Привет, я создал представление программно. С этим я добавил ярлык и текстовое поле. Но когда я нажимаю на текстовое поле, текстовое поле не работает. Он даже не вызывает его методы делегирования. Пожалуйста, помогите по этому поводу.UITextField не отвечает

в цикл я звоню этот метод возврата для создания поля Text

widgetsView.addSubview(createTextFieldForDropDown(entity,ival:i,ypos: posY)) 

// Метод для создания представления с текстовым полем и Lable

func createTextFieldForDropDown(entity:ListingCategoryFeaturesEntity,ival:Int,ypos:CGFloat) -> UIView 
    { 
     var posY = ypos 
     var posX = CGFloat(0) 
     let width = (SCREEN_WIDTH/2)-15 
     var height = CGFloat(40) 

     let viewRadio = UIView() 
     viewRadio.frame = CGRectMake(posX, posY, width, height) 
     viewRadio.backgroundColor = UIColor.greenColor() 
     height = 40 

     posY = 0 

     let lblTitle = UILabel() 
     lblTitle.frame = CGRectMake(posX, posY, width, height) 
     lblTitle.text = entity.strDisplayName 
       lblTitle.backgroundColor = UIColor.redColor() 
     lblTitle.font = GRAPHICS.FONT_REGULAR(16) 
     viewRadio.addSubview(lblTitle) 

     let tag = 9000 
     posX = lblTitle.frame.maxX+10 

     var textField = UITextField() 
     textField.frame = CGRectMake(posX, posY, width, height) 
     textField = returnTextFieldsProperties(textField, placeHolderText: "", tagValue: tag+ival) 
     textField.backgroundColor = UIColor.blueColor() 
     textField.becomeFirstResponder() 
     viewRadio.addSubview(textField) 


     return viewRadio 
    } 

// Метод Retrun свойства текстового поля

func returnTextFieldsProperties(textField : UITextField ,placeHolderText : String ,tagValue : Int) -> UITextField 
    { 
     textField.attributedPlaceholder = NSAttributedString(string:placeHolderText, 
      attributes:[NSForegroundColorAttributeName: UIColorFromRGB(colorLightGray, alpha: 1.0)]) 
     textField.font = GRAPHICS.FONT_REGULAR(14) 
     textField.textAlignment = NSTextAlignment.Left 
     textField.textColor = UIColor.blackColor() 
     textField.delegate = self 
     textField.userInteractionEnabled = true 
     textField.returnKeyType = UIReturnKeyType.Next 
     let view_left = UIView() 
     view_left.frame = CGRectMake(20,0,10,textField.frameHeight) 
     textField.leftView = view_left 
     textField.leftViewMode = UITextFieldViewMode.Always 
     textField.borderStyle = UITextBorderStyle.RoundedRect 
     textField.backgroundColor = UIColor.clearColor() 
     textField.autocorrectionType = .No 
     textField.tag = tagValue 
     return textField 
    } 
+0

Если я добавить текстовое поле непосредственно работает. Но мне нужно создать все в динамическом .. Пожалуйста, помогите мне на этом –

+0

Попробуйте установить 'viewRadio.userInteractionEnabled = true' – vacawama

+0

Нет, он не работает –

ответ

0

Попробуйте удалить:

textField.becomeFirstResponder() 

Возможно, это проблема, поскольку у вас есть все ваши текстовые поля, отмеченные этим, но, по вашему мнению, вы хотите, чтобы только текстовое поле, которое вы использовали, было первым ответчиком.

0

Я думаю, что вы не установили метод делегата, проверьте ниже используемый в проекте,

import UIKit 
class ViewController: UIViewController, UITextFieldDelegate 

если создать текстовое поле, первоначально установленный метод делегата,

var textField = UITextField() 
textField.frame = CGRectMake(posX, posY, width, height) 
textField = returnTextFieldsProperties(textField, placeHolderText: "", tagValue: tag+ival) 

**textField.delegate = self** 

textField.backgroundColor = UIColor.blueColor() 
viewRadio.addSubview(textField) 

надеюсь, что его полезный

+0

Я добавил делегат и его методы. У меня есть другой набор текстовых полей из этого метода, который работает нормально. но это текстовое поле, которое не поражает делегата. –

0

Проблема в том, что ваш textField не вне пределов его авторского права viewRadio. Сделать viewRadio достаточно широки, чтобы держать как метку и TextView:

Изменение:

viewRadio.frame = CGRectMake(posX, posY, width, height) 

к:

viewRadio.frame = CGRectMake(posX, posY, SCREEN_WIDTH, height) 
+0

Я пытаюсь изменить ширину. но все же это не –

+0

Я предложил более легкое изменение исходного кода. Убедитесь, что вы начинаете с кода, который вы указали выше. – vacawama

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