用户停止按下按钮时如何运行代码?

时间:2019-03-11 13:16:14

标签: ios swift uibutton uikit

我的密码文本字段旁边有一个眼睛按钮,该按钮应该设置为在用户按下时将该文本字段的安全文本输入属性设置为false,当用户移开手指时,该按钮应该终止。

当用户按下带有touchUpInside事件的目标时,我成功地将属性设置为false,但是我不知道如何检测到该事件已停止。这就是我想要的。

在我使用长按手势识别器之前,但是问题在于代码花了太多时间才能插入。这是正常现象,因为这是长按,但这不是我想要的行为。

我的代码是:

decorator

3 个答案:

答案 0 :(得分:1)

为按钮添加一个触地事件和一个内部触地事件:

您可以使用情节提要添加它们,因此无需手动添加目标。

//Touch down
@IBAction func touched(_ sender: UIButton) {
        print("show password")
}

//Touch up inside 
 @IBAction func touchUp(_ sender: UIButton) {
        print("hide password")
 }

答案 1 :(得分:1)

我将为两个事件向touchDown添加两个目标:

  • touchUpInside用于按下按钮时的手柄
  • override func viewDidLoad() { super.viewDidLoad() passwordEyeButton.addTarget(self, action: #selector(pressBegan(_:)), for: .touchDown) passwordEyeButton.addTarget(self, action: #selector(pressEnded(_:)), for: .touchUpInside) } @objc func pressBegan(_ sender: UIButton) { passwordEyeButton.setImage(eyeImage, for: .normal) passwordTextField.isSecureTextEntry = false } @objc func pressEnded(_ sender: UIButton) { passwordEyeButton.setImage(crossedEyeImage, for: .normal) passwordTextField.isSecureTextEntry = true } 用于用户从按钮上移开手指时的手柄

You need to exclude CassandraDataAutoConfiguration to disable spring boot cassandra auto configuration e.g.

@SpringBootApplication
@EnableAutoConfiguration(exclude = { CassandraDataAutoConfiguration.class })
public class Application {
}

Then define your own cassandra configuration e.g.

@Configuration
@EnableReactiveCassandraRepositories
public class CassandraConfig extends AbstractReactiveCassandraConfiguration {
}

答案 2 :(得分:1)

您需要管理3个事件:itemgetter.touchDown.touchUpInside

您的意图是在按下按钮时显示密码,而在释放手指时将其隐藏,因此,如果仅实施.touchUpOutside以检测到用户已停止按下按钮,它将(如果将手指释放到按钮外)起作用。

.touchUpInside