Dan*_*e B 27 uitextfield ios touch-up-inside
我想检测UITextField上的触摸操作.
看起来"触摸内部"动作不是通过触摸文本字段内部来触发的.
Dan*_*e B 59
似乎UiTextField没有启用"Touch Up Inside",但"Touch Down"可以正常工作.
所以解决方案如下:
myTextField.addTarget(self, action: #selector(myTargetFunction), for: .touchDown)
@objc func myTargetFunction(textField: UITextField) {
    print("myTargetFunction")
}
Jon*_*ann 23
class ViewController: UIViewController, UITextFieldDelegate {
    func textFieldDidBeginEditing(_ textField: UITextField) {
        if textField == myTextField {
            print("You edit myTextField")
        }
    }
}
这是一个委托功能.
Lox*_*oxx 12
这是Swfit:
并且您不需要使用"touchUpInside"只需使用委托方法,如下所示:
使您的View控制器成为委托:
class ViewController: UIViewController, UITextFieldDelegate{
func textFieldDidBeginEditing(textField: UITextField) -> Bool {
    if textField == myTextField {
        return true // myTextField was touched
    }
}
这是其他委托方法:
protocol UITextFieldDelegate : NSObjectProtocol {
    optional func textFieldShouldBeginEditing(textField: UITextField) -> Bool // return NO to disallow editing.
    optional func textFieldDidBeginEditing(textField: UITextField) // became first responder
    optional func textFieldShouldEndEditing(textField: UITextField) -> Bool // return YES to allow editing to stop and to resign first responder status. NO to disallow the editing session to end
    optional func textFieldDidEndEditing(textField: UITextField) // may be called if forced even if shouldEndEditing returns NO (e.g. view removed from window) or endEditing:YES called
    optional func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool // return NO to not change text
    optional func textFieldShouldClear(textField: UITextField) -> Bool // called when clear button pressed. return NO to ignore (no notifications)
    optional func textFieldShouldReturn(textField: UITextField) -> Bool // called when 'return' key pressed. return NO to ignore.
}
来自swift docs:
struct UIControlEvents : RawOptionSetType {
    init(_ rawValue: UInt)
    init(rawValue: UInt)
    static var TouchDown: UIControlEvents { get } // on all touch downs
    static var TouchDownRepeat: UIControlEvents { get } // on multiple touchdowns (tap count > 1)
    static var TouchDragInside: UIControlEvents { get }
    static var TouchDragOutside: UIControlEvents { get }
    static var TouchDragEnter: UIControlEvents { get }
    static var TouchDragExit: UIControlEvents { get }
    static var TouchUpInside: UIControlEvents { get }
    static var TouchUpOutside: UIControlEvents { get }
    static var TouchCancel: UIControlEvents { get }
    static var ValueChanged: UIControlEvents { get } // sliders, etc.
    static var EditingDidBegin: UIControlEvents { get } // UITextField
    static var EditingChanged: UIControlEvents { get }
    static var EditingDidEnd: UIControlEvents { get }
    static var EditingDidEndOnExit: UIControlEvents { get } // 'return key' ending editing
    static var AllTouchEvents: UIControlEvents { get } // for touch events
    static var AllEditingEvents: UIControlEvents { get } // for UITextField
    static var ApplicationReserved: UIControlEvents { get } // range available for application use
    static var SystemReserved: UIControlEvents { get } // range reserved for internal framework use
    static var AllEvents: UIControlEvents { get }
}
UITextField没有响应"touchUpInside"看到右侧,你会发现它是可接受的控件事件
Ibr*_*him 10
更新Swift 3
这是Swift 3的代码:
myTextField.addTarget(self, action: #selector(myTargetFunction), for: .touchDown)
这是功能:
func myTargetFunction() {
    print("It works!")
}
我提到了Apple的UIControlEvents文档并提出了以下内容:
首先将UITextFieldDelegate添加到您的类,然后,
textBox.delegate = self
textBox.addTarget(self, action: #selector(TextBoxOn(_:)),for: .editingDidBegin)
textBox.addTarget(self, action: #selector(TextBoxOff(_:)),for: .editingDidEnd)
具有以下功能:
func TextBoxOff(_ textField: UITextField) {
     code
         }                
}
func TextBox(_ textField: UITextField) {
    code
         }
}
对于Swift 3.1:
1)创建手势识别器:
let textViewRecognizer = UITapGestureRecognizer()
2)向识别器添加处理程序:
textViewRecognizer.addTarget(self, action: #selector(tappedTextView(_:))) 
3)将识别器添加到文本视图中:
textView.addGestureRecognizer(textViewRecognizer)
4)将处理程序添加到您的类:
func tappedTextView(_ sender: UITapGestureRecognizer) {
        print("detected tap!")
}
小智 6
为了使这更清楚一些,这些东西需要到位。我用它来做到这一点,所以如果用户在我自己的信用应用程序中输入了一些textField东西,借方中的任何内容都会textField被删除。
将debit.addTarget 和 credit.addtarget放入视图中。
@IBOutlet 弱变量借记:UITextField! 和 @IBOutlet 弱变量信用:UITextField!是故事板上的文本字段并连接到视图控制器。
class SecondViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource, UITextFieldDelegate {
@IBOutlet weak var credit: UITextField!
@IBOutlet weak var debit: UITextField!
    func myDebitDetector(textfield: UITextField ){
        print("using debit")
        credit.text = ""
    }
    func myCreditDetector(textfield: UITextField) {
        print("using cedit")
        debit.text = ""
    }
    override func viewWillAppear(animated: Bool) {
        debit.addTarget(self, action: "myDebitDetector:", forControlEvents: UIControlEvents.TouchDown)
        credit.addTarget(self, action: "myCreditDetector:", forControlEvents: UIControlEvents.TouchDown)
    ....
    }
}
| 归档时间: | 
 | 
| 查看次数: | 56506 次 | 
| 最近记录: |