温馨提示:本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦!
// 错误类型
enum PatternLockError {
INVALID_INPUT, // 无效输入
LENGTH_TOO_SHORT, // 长度不足
PATTERN_MISMATCH, // 图案不匹配
CONTROLLER_MISSING // 控制器缺失
}
// 验证结果
enum PatternLockChallengeResult {
CORRECT, // 验证成功
WRONG // 验证失败
}
关键点解析:
// 输入有效性验证
if (!input || input.length < 5) {
this.message = $r('app.string.pattern_lock_message_2');
this.startVibrator(2);
this.patternLockController?.setChallengeResult(PatternLockChallengeResult.WRONG);
setTimeout(() => {
this.patternLockController?.reset();
}, 1000);
return;
}
关键点解析:
aboutToAppear(): void {
if (!this.patternLockController) {
promptAction.showToast({
message: $r('app.string.pattern_lock_message_without_controller'),
duration: 1000
})
}
}
关键点解析:
startVibrator(vibratorCount?: number) {
try {
vibrator.startVibration({
type: 'preset',
effectId: 'haptic.clock.timer',
count: vibratorCount && vibratorCount > 1 ? vibratorCount : 1
}, {
usage: 'unknown'
}, (error: BusinessError) => {
if (error) {
console.error(`Failed to start vibration. Code: ${error.code}, message: ${error.message}`);
}
});
} catch (err) {
const error: BusinessError = err as BusinessError;
console.error(`An unexpected error occurred. Code: ${error.code}, message: ${error.message}`);
}
}
关键点解析:
// 重置组件状态
private resetState(): void {
this.patternLockController?.reset();
this.message = $r('app.string.pattern_lock_message_1');
this.passwords = [];
}
// 延时重置
setTimeout(() => {
this.resetState();
}, 1000);
关键点解析:
// 处理验证失败
private handleValidationError(): void {
this.message = $r('app.string.pattern_lock_message_4');
this.startVibrator(2);
this.patternLockController?.setChallengeResult(PatternLockChallengeResult.WRONG);
setTimeout(() => {
this.patternLockController?.reset();
}, 500);
}
关键点解析:
// 提示信息更新
this.message = $r('app.string.pattern_lock_message_2');
// Toast提示
promptAction.showToast({
message: $r('app.string.pattern_lock_message_3'),
duration: 1000
});
关键点解析:
// 成功反馈
this.startVibrator();
// 错误反馈
this.startVibrator(2);
关键点解析:
本篇教程详细介绍了:
这些内容帮助你理解图案锁组件的错误处理机制。下一篇将详细介绍交互反馈的实现。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。