ios swift alert 自定义弹框 点击半透明部分弹框消失

文章目录

1.BaseAlertVC

swift 复制代码
import UIKit

class BaseAlertVC: GLBaseViewController {
    
    let centerView = UIView()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        view.backgroundColor = UIColor(displayP3Red: 0, green: 0, blue: 0, alpha: 0.3)
        let tap = UITapGestureRecognizer.init(target: self, action: #selector(tapView))
        tap.delegate = self
        view.addGestureRecognizer(tap)
        
        view.addSubview(centerView)
    }
    
    @objc func tapView() {
        dismiss()
    }
    
    
}



extension BaseAlertVC: UIGestureRecognizerDelegate {


    
    func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
        
        if (touch.view?.isDescendant(of: centerView))! {
            return false;
        }else{
            return true;
        }
    }

}

2.BindFrameNumAlertVC

swift 复制代码
import UIKit
import XHToastSwift

class BindFrameNumAlertVC: BaseAlertVC,UITextFieldDelegate {
    
    let textField = UITextField()
    
    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
        // Get the new text after the user enters or deletes characters
        let newText = (textField.text as NSString?)?.replacingCharacters(in: range, with: string) ?? ""

        // Limit the text field to 15 characters
        return newText.count <= 15
    }


    override func viewDidLoad() {
        super.viewDidLoad()
        
        centerView.backgroundColor = .white
        centerView.snp.makeConstraints { make in
            make.width.equalTo(300)
            make.height.equalTo(250)
            make.center.equalToSuperview()
        }
        
        centerView.layer.cornerRadius = 10
        
        let titleLabel = UILabel()
        centerView.addSubview(titleLabel)
        titleLabel.text = LocalizableManager.localValue("binding_frame_number")
        titleLabel.snp.makeConstraints { make in
            make.centerX.equalToSuperview()
            make.top.equalToSuperview().offset(20)
        }
        
        textField.delegate = self
        textField.backgroundColor = UIColor.rgbColor(red: 219, green: 219, blue: 219)
        textField.keyboardType = .numberPad
        textField.textAlignment = .center
        centerView.addSubview(textField)
        textField.snp.makeConstraints { make in
            make.centerX.equalToSuperview()
            make.width.equalTo(220)
            make.height.equalTo(50)
            make.top.equalTo(titleLabel.snp_bottom).offset(30)
        }
        textField.layer.cornerRadius = 10
        //限制textField只能输入15个字符
        
        
        let alertLabel = UILabel()
        alertLabel.numberOfLines = 0
        alertLabel.font = UIFont(name: "PingFang SC", size: 13)
        alertLabel.textColor = .gray
        alertLabel.text = LocalizableManager.localValue("input_corresponding_code")
        centerView.addSubview(alertLabel)
        alertLabel.snp.makeConstraints { make in
            make.top.equalTo(textField.snp_bottom).offset(10)
            make.left.equalTo(textField).offset(10)
            make.right.equalTo(textField)
        }
        
        
        let sureBtn = UIButton()
        sureBtn.backgroundColor = UIColor.rgbColor(red: 219, green: 219, blue: 219)
        sureBtn.setTitleColor(.black, for: .normal)
        sureBtn.addTarget(self, action: #selector(sureBtnClick), for: .touchUpInside)
        sureBtn.setTitle(LocalizableManager.localValue("sure"), for: .normal)
        centerView.addSubview(sureBtn)
        sureBtn.snp.makeConstraints { make in
            make.left.equalToSuperview().offset(30)
            make.bottom.equalToSuperview().offset(-20)
            make.width.equalTo(100)
            make.height.equalTo(40)
        }
        sureBtn.layer.cornerRadius = 20
        
        let cancelBtn = UIButton()
        cancelBtn.backgroundColor = newUIYellow
        cancelBtn.addTarget(self, action: #selector(cancelBtnClick), for: .touchUpInside)
        cancelBtn.setTitle(LocalizableManager.localValue("cancel"), for: .normal)
        centerView.addSubview(cancelBtn)
        cancelBtn.snp.makeConstraints { make in
            make.right.equalToSuperview().offset(-30)
            make.bottom.equalToSuperview().offset(-20)
            make.width.equalTo(100)
            make.height.equalTo(40)
        }
        cancelBtn.layer.cornerRadius = 20
        
    }
    

    @objc func sureBtnClick(){
        print(textField.text)
        guard let str = textField.text,str.count == 15 else {
            XHToast.showBottomWithText(LocalizableManager.localValue("input_only_six_num"))
            return
        }
      
       
    }

    @objc func cancelBtnClick(){
       
    }
    

}
相关推荐
泉木2 小时前
Swift 从入门到精通-第四篇
swift
泉木2 小时前
Swift 从入门到精通-终篇
swift
ITKEY_6 小时前
appstore上架-预览和截屏
ios·appstore
阿捏利6 小时前
详解Mach-O(三十三)Mach-O __mod_term_func节
macos·ios·c/c++·mach-o
2501_916007478 小时前
提高开发效率的尝试,用快蝎(kxapp)完成 iOS 项目的创建、调试与构建
ide·vscode·ios·objective-c·个人开发·swift·敏捷流程
2501_915106329 小时前
如何在 Mac 上面代理抓包和数据流分析
android·macos·ios·小程序·uni-app·iphone·webview
blackorbird9 小时前
Coruna 间谍软件活动持续扩散,苹果破例为旧版iOS设备推送双版本安全补丁
macos·ios·objective-c·cocoa
for_ever_love__10 小时前
Objective-C 学习 单例模式
学习·ios·单例模式·objective-c
cola_wh10 小时前
避免团队多人 cocopods 冲突未验证
ios
2501_9159214310 小时前
在 Linux 上通过命令行上架 iOS APP,Fastlane + AppUploader(开心上架)
android·linux·运维·ios·小程序·uni-app·iphone