আমার আইফোনটি ভাইব্রেট করা দরকার, তবে সুইফটে কীভাবে এটি করা যায় তা আমি জানি না। আমি জানি যে অবজেক্টিভ-সি তে আপনি কেবল লিখেছেন:
import AudioToolbox
AudioServicesPlayAlertSound(kSystemSoundID_Vibrate);
তবে তা আমার পক্ষে কাজ করছে না।
আমার আইফোনটি ভাইব্রেট করা দরকার, তবে সুইফটে কীভাবে এটি করা যায় তা আমি জানি না। আমি জানি যে অবজেক্টিভ-সি তে আপনি কেবল লিখেছেন:
import AudioToolbox
AudioServicesPlayAlertSound(kSystemSoundID_Vibrate);
তবে তা আমার পক্ষে কাজ করছে না।
উত্তর:
সংক্ষিপ্ত উদাহরণ:
import UIKit
import AudioToolbox
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
AudioServicesPlayAlertSound(SystemSoundID(kSystemSoundID_Vibrate))
}
}
আপনার ফোনে লোড করুন এবং এটি স্পন্দিত হবে। আপনি নিজের ইচ্ছে মতো এটি কোনও ফাংশন বা আইবিএક્શનে রাখতে পারেন।
AudioServicesPlayAlertSoundWithCompletion(SystemSoundID(kSystemSoundID_Vibrate)) { }
অ্যাপল কোড ডক্স হিসাবে লেখা:
এই ফাংশনটি ভবিষ্যতের প্রকাশে নষ্ট হবে। পরিবর্তে অডিও সার্ভিসপ্লেসিস্টেমসাউন্ড উইথ কমপ্লেশন ব্যবহার করুন।
দ্রষ্টব্য: যদি কম্পন কাজ করে না। চেক ভাইব্রেট শব্দ এবং হ্যাপটিক্স সেটিংসে সক্ষম
আইফোন 7 বা 7 প্লাসের আইওএস 10 এ, চেষ্টা করুন:
let generator = UIImpactFeedbackGenerator(style: .heavy)
generator.impactOccurred()
অন্যান্য কম্পনের ধরণ:
import AudioToolbox
AudioServicesPlaySystemSound(1519) // Actuate "Peek" feedback (weak boom)
AudioServicesPlaySystemSound(1520) // Actuate "Pop" feedback (strong boom)
AudioServicesPlaySystemSound(1521) // Actuate "Nope" feedback (series of three weak booms)
কম্পন সম্পর্কে আরও - http://www.mikitamanko.com/blog/2017/01/29/haptic-feedback-with-uededbackgenerator/
সুইফট 4.2 আপডেট হয়েছে
আপনার প্রকল্পে কেবল নীচে কোড প্রবেশ করান।
ব্যবহার
Vibration.success.vibrate()
সোর্স কোড
enum Vibration {
case error
case success
case warning
case light
case medium
case heavy
@available(iOS 13.0, *)
case soft
@available(iOS 13.0, *)
case rigid
case selection
case oldSchool
public func vibrate() {
switch self {
case .error:
UINotificationFeedbackGenerator().notificationOccurred(.error)
case .success:
UINotificationFeedbackGenerator().notificationOccurred(.success)
case .warning:
UINotificationFeedbackGenerator().notificationOccurred(.warning)
case .light:
UIImpactFeedbackGenerator(style: .light).impactOccurred()
case .medium:
UIImpactFeedbackGenerator(style: .medium).impactOccurred()
case .heavy:
UIImpactFeedbackGenerator(style: .heavy).impactOccurred()
case .soft:
if #available(iOS 13.0, *) {
UIImpactFeedbackGenerator(style: .soft).impactOccurred()
}
case .rigid:
if #available(iOS 13.0, *) {
UIImpactFeedbackGenerator(style: .rigid).impactOccurred()
}
case .selection:
UISelectionFeedbackGenerator().selectionChanged()
case .oldSchool:
AudioServicesPlaySystemSound(SystemSoundID(kSystemSoundID_Vibrate))
}
}
}
জন্য আইওএস 10.0+ আপনি চেষ্টা করতে পারেন UIFeedbackGenerator
উপরের সরল দর্শনীয় নিয়ন্ত্রণকারী, কেবলমাত্র আপনার পরীক্ষার "একক দর্শন অ্যাপ্লিকেশন" এ আপনার দৃশ্য নিয়ন্ত্রণকারীকে প্রতিস্থাপন করুন
import UIKit
class ViewController: UIViewController {
var i = 0
override func viewDidLoad() {
super.viewDidLoad()
let btn = UIButton()
self.view.addSubview(btn)
btn.translatesAutoresizingMaskIntoConstraints = false
btn.widthAnchor.constraint(equalToConstant: 160).isActive = true
btn.heightAnchor.constraint(equalToConstant: 160).isActive = true
btn.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
btn.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
btn.setTitle("Tap me!", for: .normal)
btn.setTitleColor(UIColor.red, for: .normal)
btn.addTarget(self, action: #selector(tapped), for: .touchUpInside)
}
@objc func tapped() {
i += 1
print("Running \(i)")
switch i {
case 1:
let generator = UINotificationFeedbackGenerator()
generator.notificationOccurred(.error)
case 2:
let generator = UINotificationFeedbackGenerator()
generator.notificationOccurred(.success)
case 3:
let generator = UINotificationFeedbackGenerator()
generator.notificationOccurred(.warning)
case 4:
let generator = UIImpactFeedbackGenerator(style: .light)
generator.impactOccurred()
case 5:
let generator = UIImpactFeedbackGenerator(style: .medium)
generator.impactOccurred()
case 6:
let generator = UIImpactFeedbackGenerator(style: .heavy)
generator.impactOccurred()
default:
let generator = UISelectionFeedbackGenerator()
generator.selectionChanged()
i = 0
}
}
}
আপনি AudioServices
বা হয় ব্যবহার করে ফোনটি কম্পন করতে পারেন Haptic Feedback
।
// AudioServices
AudioServicesPlayAlertSound(SystemSoundID(kSystemSoundID_Vibrate))
// Haptic Feedback
UIImpactFeedbackGenerator(style: .medium).impactOccurred()
আমার ওপেন সোর্স ফ্রেমওয়ার্ক চেকআউট Haptica , এটি উভয় সমর্থন Haptic Feedback
, AudioServices
এবং অনন্য কম্পন নিদর্শন। সুইফট 4.2, এক্সকোড 10 এ কাজ করে
import AudioToolbox
extension UIDevice {
static func vibrate() {
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate)
}
}
এখন আপনি UIDevice.vibrate()
প্রয়োজন হিসাবে কল করতে পারেন ।
ইউআইএনওটিফিকেশন ফিডব্যাক জেনারেটর আইওএস 10 থেকে পাওয়া যায় এবং হ্যাপটিক ভি 2 এর সাথে কাজ করে, আমরা এটি পরীক্ষা করতে পারি:
let feedbackSupportLevel = UIDevice.current.value(forKey: "_feedbackSupportLevel") as? Int
if #available(iOS 10.0, *), let feedbackSupportLevel = feedbackSupportLevel, feedbackSupportLevel > 1 {
do { // 1
let generator = UIImpactFeedbackGenerator(style: .medium)
generator.impactOccurred()
}
do { // or 2
let generator = UINotificationFeedbackGenerator()
generator.notificationOccurred(.success)
}
} else {
AudioServicesPlayAlertSound(SystemSoundID(kSystemSoundID_Vibrate))
}
AudioServicesPlaySystemSound(SystemSoundID(kSystemSoundID_Vibrate))
AudioServicesPlaySystemSound
শীর্ষ উত্তরের পরিবর্তে ব্যবহার করছেন AudioServicesPlayAlertSound
।