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(){
       
    }
    

}
相关推荐
MDM.Plus1 天前
苹果MDM技术演进:从远程控制到设备信任体系的构建
运维·服务器·安全·ios·mdm·手机店
韩曙亮1 天前
【Flutter】Flutter 进程保活 ③ ( 屏幕常亮设置 | Flutter 禁止息屏、关闭自动锁屏、屏蔽系统屏保 )
android·flutter·ios·屏幕常亮·禁止息屏
2501_915909061 天前
IPA 深度混淆是什么意思?从混淆强度到实际效果的解读
android·ios·小程序·https·uni-app·iphone·webview
灯澜忆梦1 天前
GO_函数_2
开发语言·golang·xcode
apihz1 天前
经纬度制作高清卫星图片免费 API 接口详解
开发语言·ios·swift
黄林晴1 天前
KMP 正式支持 SwiftPM:CocoaPods 迁移配置指南
android·ios·kotlin
Tisfy2 天前
iOS:压缩和解压live图(.livp)——百度一刻相册+百度网盘识别支持
ios·百度网盘·livp·live图·一刻相册
唐诺2 天前
Objective-C 之 KVC 详解
ios·objective-c·kvc
00后程序员张2 天前
iOS 打包方式汇总 从 Xcode Archive 到轻量级工具链的 IPA 构建
ide·vscode·ios·objective-c·个人开发·swift·敏捷流程
sweet丶3 天前
Swift 黑魔法:`@dynamicMemberLookup`
swift·rxswift